Nginx(发音为“Engine-X”)是一个开源、高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3代理服务器,以其高稳定性、丰富的功能集、简单的配置和低资源消耗而闻名,它已成为许多大型网站首选的Web服务器软件,在稳定性和可靠性要求极高的企业级操作系统CentOS中部署和管理Nginx,是许多系统管理员和开发者的核心工作之一,本文将详细介绍在CentOS环境中,从安装到配置管理的全过程,帮助读者全面掌握Nginx的应用。

Nginx简介与核心优势
相较于传统的Apache服务器,Nginx采用了事件驱动的异步非阻塞处理架构,这使得它在处理高并发连接时表现出色,内存占用极低,其核心优势主要体现在以下几个方面:
- 高性能与低资源消耗:得益于其事件驱动模型,Nginx能够在单台服务器上轻松处理数万甚至数十万的并发连接,而CPU和内存的消耗却保持在很低水平。
 - 反向代理与负载均衡:Nginx可以作为强大的反向代理服务器,将客户端请求转发给后端的多台应用服务器,并内置多种负载均衡策略(如轮询、IP哈希、最少连接等),有效提升网站的可用性和扩展性。
 - 静态文件处理:处理静态资源(如HTML、CSS、JavaScript、图片等)是Nginx的强项,它能够以极快的速度响应静态文件请求,减轻后端应用服务器的压力。
 - 高度模块化与灵活性:Nginx的功能可以通过各种第三方模块进行扩展,例如用于视频流的
nginx-rtmp-module,或用于增强安全性的模块,其配置语法清晰简洁,易于理解和维护。 
在CentOS上安装Nginx
在CentOS上安装Nginx最推荐的方法是使用其官方的YUM仓库,这样可以确保软件的稳定性和后续的便捷更新,以下以CentOS 7/8为例进行说明。
需要通过SSH登录到您的CentOS服务器,并确保拥有sudo权限。
第一步:更新系统并安装EPEL仓库 为了获取到Nginx的软件包,我们需要先安装EPEL(Extra Packages for Enterprise Linux)仓库。
sudo yum update -y sudo yum install epel-release -y
第二步:安装Nginx
EPEL仓库启用后,可以直接使用yum命令安装Nginx。
sudo yum install nginx -y
安装过程会自动处理所有依赖关系,完成后,Nginx及其相关文件就会被放置在系统的标准目录中。
Nginx基本操作与防火墙配置
安装完成后,需要学习如何管理Nginx服务,并正确配置防火墙以允许Web流量。

Nginx服务管理
CentOS 7及以后版本使用systemd作为初始化系统,因此我们使用systemctl命令来管理Nginx服务。
| 命令 | 功能描述 | 
|---|---|
sudo systemctl start nginx | 
启动Nginx服务 | 
sudo systemctl stop nginx | 
停止Nginx服务 | 
sudo systemctl restart nginx | 
重启Nginx服务(会中断连接) | 
sudo systemctl reload nginx | 
平滑重载Nginx配置(不中断连接) | 
sudo systemctl enable nginx | 
设置Nginx开机自启动 | 
sudo systemctl status nginx | 
查看Nginx服务当前状态 | 
配置防火墙
CentOS默认使用firewalld作为防火墙管理工具,必须开放HTTP(80端口)和HTTPS(443端口)服务,否则外部无法访问您的网站。
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
执行完这些命令后,您就可以在浏览器中通过服务器的IP地址或域名访问Nginx的默认欢迎页面了。
Nginx核心配置文件解析
理解Nginx的配置是灵活运用的关键,Nginx的主配置文件位于/etc/nginx/nginx.conf,其结构层次分明,主要由几个区块构成。
- 全局块:配置影响Nginx全局的指令,如运行Nginx服务器的用户组、worker进程数、错误日志路径等。
 - events块:配置影响Nginx服务器或与用户的网络连接,如每个worker进程的最大连接数
worker_connections。 - http块:这是最核心的配置区域,可以嵌套多个
server块,它包含了文件引入、MIME-Type定义、日志自定义、连接超时、以及sendfile、keepalive_timeout等核心性能调优指令。 - server块:用于配置虚拟主机,一个
http块可以包含多个server块,每个server块对应一个或多个域名/网站,主要指令包括listen(监听端口)、server_name(域名)、root(网站根目录)、index(默认首页文件)等。 - location块:位于
server块内部,用于匹配请求的URI,并对此类请求应用特定的配置,可以设置不同的location来处理静态文件、代理转发或重写URL。 
为了便于管理和维护,最佳实践是将每个网站的server块配置单独存放在/etc/nginx/conf.d/目录下,以.confNginx主配置文件会自动加载该目录下的所有配置文件。
搭建一个简单的静态网站
让我们通过一个实例来巩固所学知识,搭建一个简单的静态网站。
- 
创建网站目录和文件:

sudo mkdir -p /var/www/myproject echo "<h1>Hello from My Project on Nginx!</h1>" | sudo tee /var/www/myproject/index.html sudo chown -R nginx:nginx /var/www/myproject
 - 
创建Nginx配置文件: 在
/etc/nginx/conf.d/目录下创建一个新的配置文件,例如myproject.conf。sudo vi /etc/nginx/conf.d/myproject.conf
server { listen 80; server_name your_domain.com www.your_domain.com; # 替换为您的域名或服务器IP root /var/www/myproject; index index.html; location / { try_files $uri $uri/ =404; } } - 
测试并重载配置: 在应用新配置前,务必测试其语法是否正确。
sudo nginx -t
如果显示
syntax is ok和test is successful,说明配置无误,然后平滑重载Nginx使配置生效。sudo systemctl reload nginx
 
在浏览器中访问您的域名或IP地址,应该就能看到“Hello from My Project on Nginx!”的页面了。
相关问答FAQs
问:我修改了Nginx配置文件后,网站没有更新,怎么办?
答: 这是一个常见问题,强烈建议在修改任何配置后,执行 sudo nginx -t 命令来检查配置文件是否存在语法错误,如果检查通过,配置之所以没有生效,很可能是因为您没有让Nginx重新加载配置,请执行 sudo systemctl reload nginx 来平滑重载配置,这个命令不会中断现有的连接,只是让Nginx读取新的配置文件,如果重载无效,可以尝试 sudo systemctl restart nginx 进行完全重启,但这会短暂中断服务。
问:如何撤销Nginx的开机自启动设置?
答: 如果您不希望Nginx在服务器重启后自动运行,可以使用 systemctl 命令的 disable 选项来移除开机自启动,具体命令是 sudo systemctl disable nginx,执行后,Nginx不会在下次系统启动时自动启动,但当前正在运行的Nginx服务不会停止,您仍需手动执行 sudo systemctl stop nginx 来立即停止它。