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

Nginx的安装和配置疑难解答

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

介绍

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

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

如何使用本指南:

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

安装Nginx

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

代码语言:txt
AI代码解释
复制
$ sudo apt-get update
$ sudo apt-get install nginx

检查Nginx的状态

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl status nginx

启用Nginx

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl disable nginx

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl enable nginx

停止,启动和重新加载Nginx

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl stop nginx

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl start nginx

要再次启动Nginx,请输入:

代码语言:txt
AI代码解释
复制
$ sudo systemctl restart nginx

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl reload nginx

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

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

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

代码语言:txt
AI代码解释
复制
$ 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其中每个子目录的权限。

代码语言:txt
AI代码解释
复制
$ 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将在启动时读取该链接。

请输入以下命令:

代码语言:txt
AI代码解释
复制
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

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

代码语言:txt
AI代码解释
复制
$ sudo systemctl reload nginx

解决哈希bucket内存问题

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

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

代码语言:txt
AI代码解释
复制
$ sudo nano /etc/nginx/nginx.conf

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

代码语言:txt
AI代码解释
复制
/etc/nginx/nginx.conf
http {
. . .
server_names_hash_bucket_size 64;
. . .
}

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

检查配置文件

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

代码语言:txt
AI代码解释
复制
$ sudo nginx -t

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

代码语言:txt
AI代码解释
复制
$ nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
$ nginx: configuration file /etc/nginx/nginx.conf test is successful

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

代码语言:txt
AI代码解释
复制
$ 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 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Apache基础教程:软件安装和故障排查
Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数电脑操作系统中运行。由于其跨平台和安全性,被广泛使用,是最流行的Web服务器软件之一。它快速、可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中。在本教程中,我们将介绍一些管理Apache服务器的常用方法,包括停止,启动和启用服务,如何使用虚拟主机文件和目录,以及在服务器上查找重要文件和目录。
姚啊姚
2018/08/02
1.2K0
如何在Ubuntu 16.04上安装Nginx
Nginx是世界上最受欢迎的网络服务器之一,负责托管互联网上一些规模最大,流量最高的网站。在大多数情况下,它比Apache更加资源友好,可以用作Web服务器或反向代理。
小皇帝James
2018/10/11
2.4K0
如何在Debian 9上安装Linux,Nginx,MySQL,PHP(LEMP堆栈)
LEMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在MySQL数据库中,动态处理由PHP处理。
温浪
2018/11/20
3.5K1
如何在Ubuntu 16.04上使用uWSGI和Nginx为Django应用程序提供服务
Django是一个功能强大的Web框架,可以帮助您实现Python应用程序或网站。Django包含一个简化的开发服务器,用于在本地测试您的代码,但是对于任何与生产相关的细节,都需要一个更安全,更强大的Web服务器。
尘埃
2018/10/19
4.3K0
linux中创建Nginx虚拟主机
什么是虚拟主机? 如果你不确定虚拟主机是什么,让我解释一下。这是一个Apache HTTP Server 术语,然而,Nginx 用户也经常使用它。事实上,Nginx 的正确术语是 server block。 虚拟主机是一种在单个服务器上托管多个域名的方法。 虚拟主机如何工作? 当你在服务器上启动像 Nginx 这样的 Web 服务器软件时,该 Web 服务器将自己绑定到一个或多个网络端口。通常用于将成为端口 80 和 443 的 Web 服务器。 现在,当计算机访问网站时,它将通过 Internet 向服
入门笔记
2022/06/02
1.9K0
在 Ubuntu 16.04 下配置 Nginx + PHP 7.0 + MySQL 环境
之前我用 lnmp.org 的一键安装包来配置 web 服务器,一直懒得去动,对 nginx 的配置也是一知半解。买了新的 vps 之后需要重新配置服务器环境,趁这个机会让我手动一个个安装它们并且熟悉熟悉吧。
zgq354
2019/11/24
1.9K0
在Debian和Ubuntu上安装Ghost(CMS)博客发布平台
Ghost是一个免费的开源和轻量级平台,用于博客或在线出版物。 它是在Nodejs中编写的, 并附有各种各样的现代出版工具,用于轻松构建和运行在线出版物。
子润先生
2021/06/15
1.4K0
如何在Debian 8上安装Nginx
Nginx是Apache2的流行HTTP服务器替代品。它可以用作反向代理,邮件服务器或Web服务器。根据截至2015年7月的Netcraft调查,Nginx目前占有14%的市场份额,并且自2007年以来一直呈上升趋势。
不会飞的蝴蝶
2018/10/11
1.9K0
如何在Ubuntu 16.04上设置Nginx服务器块(虚拟主机)
使用Nginx Web服务器时,可以使用服务器块(类似于Apache中的虚拟主机)来封装配置详细信息,并从单个服务器托管多个域。
葡萄
2018/10/19
4.9K0
如何在Ubuntu 18.04上设置Nginx服务器模块
Nginx服务器块允许您在一台机器上运行多个网站。 使用服务器块,您可以指定站点文档根目录(包含网站文件的目录),为每个站点创建单独的安全策略,为每个站点使用不同的SSL证书等等。
星哥玩云
2022/07/13
2K0
如何在Ubuntu 18.04上设置Nginx服务器模块
【Linux】Web服务之Nginx服务
在大多数Linux发行版中,您可以使用系统的包管理工具来安装Nginx。以下是在Ubuntu和CentOS上的示例:
人不走空
2024/02/20
1810
如何在Nbuntu 18.04上将Nginx Web Root移动到新位置
在Ubuntu上,Nginx Web服务器将其文档存储在/var/www/html中,该文档通常位于其余具有操作系统部分的根文件系统上。但有时,将文档根移动到另一个位置(例如单独安装的文件系统)会很有帮助。例如,如果您从同一个Nginx实例提供多个网站,则将每个网站的文档根目录放在其自己的卷上,这样您就可以根据特定网站或客户端的需求进行扩展。
所有的酒都不如你
2018/10/19
9860
如何在 Debian 9 上设置 Apache 虚拟主机
在本教程中,我们将向您介绍如何在 Debian 9 上设置 Apache 虚拟主机。
星哥玩云
2022/07/28
1.1K0
如何在 Debian 9 上设置 Apache 虚拟主机
使用Ubuntu16.04搭建CMS服务器
5. 添加ppa软件源: 1).apt-get install -y python-software-properties 2).apt-key adv –keyserver ha.pool.sks-keyservers.net –recv-keys 4F4EA0AAE5267A6C 3).add-apt-repository -y ppa:ondrej/php 4).apt-get update
全栈程序员站长
2022/11/19
8060
Ubuntu 下配置 Nginx 服务器的 SSL 证书
首先,让我们在/etc/nginx/snippets目录中创建一个新的Nginx配置代码段。
星哥玩云
2022/07/25
1.7K0
如何在 Ubuntu 20.04 上使用LEMP安装WordPress
WordPress 需要 Web 服务器、数据库和 PHP 才能正常运行。设置 LEMP 堆栈(Linux、Nginx、MySQL 和 PHP)可以满足所有这些要求。无需自己设置这些组件,您可以快速配置已经安装了 LEMP 堆栈的 Ubuntu 20.04 服务器、
小颖club
2022/04/11
8100
如何在Ubuntu 16.04上使用Deployer自动部署Laravel应用程序
Laravel是一个开源的PHP Web框架,旨在使常见的Web开发任务(如身份验证,路由和缓存)变得更加容易。Deployer是一个开源的PHP部署工具,为许多流行的框架提供立即可用的支持,包括Laravel,CodeIgniter,Symfony和Zend Framework。
心语花束
2018/08/06
15.6K0
如何在Ubuntu 16.04上使用Deployer自动部署Laravel应用程序
如何在 Ubuntu 20.04 上安装 Nginx
本文最先发布在:https://www.itcoder.tech/posts/how-to-install-nginx-on-ubuntu-20-04/
雪梦科技
2020/05/04
6.2K0
如何在 Ubuntu 20.04 上安装 Nginx
如何使用Nginx在Ubuntu 16.04上使用SSL保护Concourse CI
Concourse CI是一个现代且可扩展的持续集成系统,旨在通过可组合的声明性语法自动化测试管道。基于早期CI系统的成功,Concourse旨在简化管道管理并消除“雪花”服务器,以便测试服务器与其处理的代码一样受到监管。
小翼111
2018/10/19
9520
如何在CentOS 7上安装和配置Ghost
Ghost是一个轻量级的开源博客平台,易于使用。Ghost是完全可定制的,有许多主题可用。
风研雨墨
2018/08/02
3.2K1
相关推荐
Apache基础教程:软件安装和故障排查
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文