Nginx Essentials:安装和配置故障排除

介绍

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

要了解更多关于 systemdsystemctl 命令的信息,请参阅此 介绍 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-enabledy /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 配置文件的语法。

Published At
Categories with 技术
Tagged with
comments powered by Disqus