介绍
Nginx 是一个免费和开源的 Web 服务器,用于托管各种尺寸的网站和应用程序. 该软件以其对内存资源的低影响,高可扩展性以及其模块化,事件驱动的架构而闻名,可以提供安全、可预测的性能。
与任何复杂的软件工具一样,很难记住管理 Nginx 服务器或解决任何问题的具体命令和最佳做法. 此 cheatsheet 风格的指南旨在为任何与 Nginx 合作的人提供快速参考。
如何使用此指南:
- 每个部分都可以独立使用,所以您可以轻松跳过任何与您的需求相关的部分 *本指南的每个部分中的命令都是自包含的,您应该将示例命令中的红色值替换为自己的值 *本指南的部分在适当情况下包含其他资源的链接,您可以查阅更多信息 *本指南假定您正在使用来自 Debian 发行版的默认存储库安装的 Nginx 版本。
安装 Nginx
使用sudo apt-get
,更新您的包索引,然后安装服务:
1sudo apt-get update
2sudo apt-get install nginx
有关安装和安装过程的更多细节,请遵循我们在 Ubuntu 16.04 上如何安装 Nginx 的教程(https://andsky.com/tech/tutorials/how-to-install-nginx-on-ubuntu-16-04)。
检查 Nginx 的状态
您可以通过在您的命令提示中输入以下内容来检查 Nginx 是否在您的机器上运行:
1sudo systemctl status nginx
启用 Nginx
默认情况下, Nginx 配置为在服务器启动时自动启动。
1sudo systemctl disable nginx
要重新启用服务在启动时启动,键入:
1sudo systemctl enable nginx
停止、启动和重新加载 Nginx
要停止运行的 Nginx 服务器:
1sudo systemctl stop nginx
一旦服务器停止,您可以通过键入重新启动:
1sudo systemctl start nginx
要停止,然后重新启动 Nginx,键入:
1sudo systemctl restart nginx
您还可以重新加载 Nginx 而不打扰连接:
1sudo systemctl reload nginx
要了解更多关于 systemd
和 systemctl
命令的信息,请参阅此 介绍 systemd 基本。
创建一个静态网站的文档根
在使用 Nginx Web 服务器时,服务器块(类似于 Apache 中的虚拟主机)用于在单个服务器上托管多个域。
下面的区块中的命令将创建一个新的文档根,将文档根的所有权更改给非根用户,并在 /var/www/
内修改每个子目录的权限。
1sudo mkdir -p /var/www/example.com/html
2sudo chown -R $USER:$USER /var/www/example.com/html
3find /var/www -type d -exec chmod 775 {} \;
在本示例中,我们正在确保文档根目录具有全球读取和执行权限,但您应该取代775
的另一个值来反映您的特定需求。
创建一个动态处理网站的文档根
当使用 Nginx 与某些程序(例如 PHP-FPM)一起生成动态处理的网站时,您可能需要调整某些文件的权限,以允许www-data
组访问或甚至拥有,特别是如果它需要能够写入目录。
下面的区块中的命令将创建一个新的文档根,修改文档根的所有权到www-data
组,并修改在/var/www
中的每个子目录的权限。
1sudo mkdir -p /var/www/example.com/html
2sudo chown -R www-data:www-data /var/www/example.com
3sudo find /var/www -type d -exec chmod 775 {} \;
要了解更多有关权限的信息,请参阅我们的 Linux 权限的介绍。我们还可以参考我们在 Ubuntu 16.04 上如何设置 Nginx 服务器块(虚拟主机)的教程(https://andsky.com/tech/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu-16-04),该教程提供了创建和更改文档根的详细方法。
启用配置文件
我们可以通过创建从网站可用
目录到网站可用
目录的象征链接来启用服务器块的配置文件, Nginx将在启动过程中读取。
要做到这一点,请输入以下命令:
1sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
链接文件后,重新加载 Nginx 以反映更改并启用服务器封锁的配置文件:
1sudo systemctl reload nginx
解决 Hash Bucket 记忆问题
Nginx 使用哈希表(这些表被组织成桶
)来快速处理服务器名称或 MIME 类型等静态数据,因此,如果您添加了多个服务器名称,有可能服务器名称哈希桶的大小不再足够,并且您在进行更改时会看到server_names_hash_bucket_size
错误。
若要打开 config 文件,请输入:
1sudo nano /etc/nginx/nginx.conf
在檔案中,尋找「server_names_hash_bucket_size」指令. 移除「#」符號以解釋行,並將指令的值增加為下一個兩力:
1[label /etc/nginx/nginx.conf]
2http {
3 . . .
4
5 server_names_hash_bucket_size 64;
6
7 . . .
8}
这样做将增加 Nginx 服务器名称哈希表的桶大小,并允许服务处理您添加的所有服务器名称。
查看您的配置文件
每当你对 Nginx 配置文件进行更改时,重要的是检查是否留下任何语法错误。
1sudo nginx -t
如果您的配置文件有错误,则命令的输出会告诉您文件中发现错误的确切位置;相反,如果您的 nginx config 文件中没有语法错误,则将看到类似以下的输出:
1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful
如果没有发现任何错误,并且您想立即应用更改,请重新启动服务:
1sudo systemctl restart nginx
重要 Nginx 文件和目录
随着您花费时间使用 Nginx,您可能会发现自己经常访问以下文件和目录:
内容
/var/www/html
:这是默认文档根的位置,从那里提供实际的网页内容。
服务器配置
/etc/nginx/
: 默认的 Nginx 配置目录,在那里可以找到所有 Nginx 配置文件/etc/nginx/nginx.conf
: 主要的 Nginx 配置文件. 这可以用于对 Nginx 的配置进行全球更改/etc/nginx/sites-available/default
: Nginx 的默认服务器块文件. 其他每个站点的服务器块也存储在sites-available
目录中,尽管这些都不会被使用,除非它们链接到sites-enabled
y/etc/nginx/sites-enabled/
: 每个站
服务器日志
/var/log/nginx/access.log
:在这个日志文件中记录到您的 Web 服务器的每一个请求,除非 Nginx 已配置为另行操作/var/log/nginx/error.log
:任何 Nginx 错误都会记录在这个日志中- 若要访问 Nginx 过程的 systemd 日志,请执行以下命令:
1sudo journalctl -u nginx
结论
本指南涵盖了管理 Nginx 服务器的基本命令和做法,包括如何启动、停止和检查 Nginx 的状态,如何找到网站的文档根,以及如何检查 Nginx 配置文件的语法。