前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Nginx的安装和配置疑难解答

Nginx的安装和配置疑难解答

原创
作者头像
心语花束
发布2018-07-23 10:16:51
8390
发布2018-07-23 10:16:51
举报

介绍

Nginx是一个免费的开源Web服务器,用于托管各种规模的网站和应用程序。该软件以其对内存资源的低影响,高可扩展性以及可提供安全,预测性能的模块化事件驱动架构而闻名。Nginx不仅仅是一个Web服务器,还可以用作负载均衡器,HTTP缓存和反向代理。

本指南旨在为任何使用Nginx的人提供快速参考。它将介绍一些基本的服务管理命令,以及诊断和解决一些常见问题的技巧。更多的技巧访问腾讯云Nginx中文开发者手册

如何使用本指南:

  • 每个部分都可以独立使用,因此可以随意跳到与您的需求相关的任何部分。
  • 本指南中的部分内容包含指向其他资源的链接,您可以参考这些资源以获取更多信息。
  • 本指南假设您使用基于Debian发行版的默认存储库安装的Nginx版本。请注意,本指南中描述的某些约定不存在于其他发行版或其他来源的Nginx版本中。

安装Nginx

使用sudo apt-get,更新包索引,然后安装服务:

$ sudo apt-get update
$ sudo apt-get install nginx

检查Nginx的状态

您可以通过在命令提示符中输入以下内容来检查Nginx是否在您的计算机上运行:

$ sudo systemctl status nginx

启用Nginx

默认情况下,Nginx配置为在服务器引导时自动启动。可以通过输入以下内容来禁用此行为:

$ sudo systemctl disable nginx

要重新启用服务,请输入:

$ sudo systemctl enable nginx

停止,启动和重新加载Nginx

要停止已经运行的Nginx服务器:

$ sudo systemctl stop nginx

服务器停止后,您可以输入以下命令再次启动它:

$ sudo systemctl start nginx

要再次启动Nginx,请输入:

$ sudo systemctl restart nginx

您还可以在不中断连接的情况下重新加载Nginx:

$ sudo systemctl reload nginx

为静态站点创建文档根目录

使用Nginx Web服务器时,服务器块(类似于Apache中的虚拟主机)用于在单个服务器上托管多个域。每个服务器块都有自己的文档根,这是Nginx在提供域内容之前必须检查的特殊目录。

下面的命令将创建一个新的文档根目录,并修改文档根目录对非root用户的所有权,然后修改/var/www/其中每个子目录的权限。

$ sudo mkdir -p /var/www/example.com/html
$ sudo chown -R $USER:$USER /var/www/example.com/html
$ find /var/www -type d -exec chmod 775 {} \;

我们可以确保文档根目录具有全局读取和执行权限,但如果您有其他需求,请使用其他值替换775。

为动态处理的站点创建文档根目录

当使用Nginx与某些程序(例如,PHP-FPM)来生成动态处理的站点时,您可能需要调整一些文件的权限以允许www-data组访问甚至所有权,特别是在其需要写入目录权限的时候。

下面的命令将创建一个新的文档根目录,修改文档根目录对www-data组的所有权,并修改/var/www其中每个子目录的权限。

$ sudo mkdir -p /var/www/example.com/html
$ sudo chown -R www-data:www-data /var/www/example.com
$ sudo find /var/www -type d -exec chmod 775 {} \;

启用配置文件

我们可以通过创建从sites-available目录到sites-enabled目录的符号链接来启用服务器块的配置文件,Nginx将在启动时读取该链接。

请输入以下命令:

$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

链接文件后,重新加载Nginx以更新更改并启用服务器块的配置文件:

$ sudo systemctl reload nginx

解决哈希bucket内存问题

Nginx使用哈希表(多个组成哈希桶)来快速处理静态数据,如服务器名称或MIME类型。因此,如果您添加了多个服务器名称,则服务器名称的哈希桶的大小可能不再足够,您在进行更改时会看到server_names_hash_bucket_size错误。这可以通过调整/etc/nginx/nginx.conf文件中的单个值来解决。

要打开此配置文件,请输入:

$ sudo nano /etc/nginx/nginx.conf

在文件中,找到该server_names_hash_bucket_size指令。删除#符号以取消注释该行,并将指令的值增加下一个2的幂数:

/etc/nginx/nginx.conf
http {
. . .
server_names_hash_bucket_size 64;
. . .
}

这样做会增加Nginx服务器名称哈希表的桶大小,并允许服务处理您添加的所有服务器名称。完成后保存并关闭文件,然后重新启动Nginx以反映更改。

检查配置文件

每当您对Nginx配置文件进行更改时,重要的是检查是否遗漏了任何语法错误。这可以通过发出以下命令来完成:

$ sudo nginx -t

如果配置文件中存在错误,则命令的输出将告诉您文件错误之处的确切位置。相反,如果您的任何nginx配置文件中没有语法错误,您将看到类似于以下内容的输出:

$ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
$ nginx: configuration file /etc/nginx/nginx.conf test is successful

如果未发现任何错误,并且您想立即应用更改,请重新启动该服务:

$ sudo systemctl restart nginx

重要的Nginx文件和目录

当您使用Nginx时,您可能会发现自己经常访问以下文件和目录:

内容

  • /var/www/html:这是提供实际Web内容的默认文档根目录的位置。可以通过更改Nginx配置文件来更改文档根目录。

服务器配置

  • /etc/nginx/:默认的Nginx配置目录,其中可以找到所有Nginx配置文件。
  • /etc/nginx/nginx.conf:主Nginx配置文件。这可以用于对Nginx的配置进行全局更改。
  • /etc/nginx/sites-available/default:Nginx的默认服务器块文件。其他站点服务器块也存储在sites-available目录中,但只有在它们链接到sites-enabled目录的时候,才会使用这些块。
  • /etc/nginx/sites-enabled/:存储每个站点“服务器块”的目录。通通过链接到sites-available目录中的配置文件来创建。

服务器日志

  • /var/log/nginx/access.log:对Web服务器的每个请求都将记录在此日志文件中,除非将Nginx配置为执行其他操作。
  • /var/log/nginx/error.log:任何Nginx错误都将记录在此日志中。
  • 要访问Nginx进程的systemd日志,请运行以下命令:$ sudo journalctl -u nginx结论

结论

本指南介绍了管理Nginx服务器的基本命令和方法,包括如何启动,停止和检查Nginx的状态,如何查找网站的文档根目录以及如何检查Nginx配置文件的语法。同时腾讯云专属在线实验平台提供搭建Nginx静态网站的上机实验,实验是从零开始基于 Nginx 搭建一个静态网站服务。过程会涉及到 Nginx 的安装、配置和运行。


参考文献:《Nginx Essentials: Installation and Configuration Troubleshooting》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 安装Nginx
  • 检查Nginx的状态
  • 启用Nginx
  • 停止,启动和重新加载Nginx
  • 为静态站点创建文档根目录
  • 为动态处理的站点创建文档根目录
  • 启用配置文件
  • 解决哈希bucket内存问题
  • 检查配置文件
  • 重要的Nginx文件和目录
    • 内容
      • 服务器配置
        • 服务器日志
        • 结论
        相关产品与服务
        负载均衡
        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档