在服务器环境里,Nginx 基本已经成为 Web 服务的默认选择之一,不管是做静态站点托管、反向代理、负载均衡还是作为 API 网关入口,它都能提供稳定且高性能的表现。尤其是在 Ubuntu 和 CentOS 这两类主流 Linux 发行版上,Nginx 的安装与配置已经非常成熟,但真正用到生产环境时,很多问题并不是“能不能装起来”,而是“是否合理、是否稳定、是否可扩展”。这篇文章不做概念堆砌,直接从实际服务器部署的路径出发,把安装、基础配置、安全优化、以及常见坑一次讲清楚。
一、安装前的系统准备与环境检查
在开始安装 Nginx 之前,不管是 Ubuntu 还是 CentOS,都建议先确认系统环境是否干净。很多生产问题并不是 Nginx 本身造成的,而是旧版本 Apache、残留 PHP-FPM 配置或者防火墙规则冲突导致的。可以先执行一些基础检查命令,例如查看系统版本、内核以及当前占用 80/443 端口的服务。
在 Ubuntu 系统中,一般使用:
lsb_release -a
CentOS 中则可以使用:
cat /etc/redhat-release
同时检查端口占用情况:
ss -tulnp | grep -E '80|443'
如果发现 Apache(httpd)正在运行,建议直接停用并禁用:
systemctl stop httpd
systemctl disable httpd
因为 Nginx 和 Apache 同时监听 80 端口时,几乎一定会冲突,除非你明确做了反向代理分流,否则没有必要共存。
二、Ubuntu 系统安装 Nginx(APT 方式)
在 Ubuntu 上安装 Nginx 非常直接,APT 仓库中已经提供了稳定版本,一般生产环境建议直接使用系统源版本,而不是源码编译版本,除非你有特殊模块需求。
更新软件源:
apt update
安装 Nginx:
apt install nginx -y
安装完成后,直接启动服务:
systemctl start nginx
systemctl enable nginx
检查运行状态:
systemctl status nginx
如果看到 active (running),说明已经成功启动。
此时可以在浏览器访问服务器 IP,如果看到 “Welcome to nginx” 页面,说明基础环境已经完全打通。
Ubuntu 的 Nginx 默认配置路径一般在:
- 主配置文件:
/etc/nginx/nginx.conf - 站点配置:
/etc/nginx/sites-available/ - 启用配置:
/etc/nginx/sites-enabled/ - 日志目录:
/var/log/nginx/
这种结构的特点是“逻辑分离清晰”,适合多站点管理。
三、CentOS 系统安装 Nginx(YUM / DNF 方式)
CentOS 默认源通常不带 Nginx,需要先添加官方仓库。不同版本略有差异,CentOS 7 使用 yum,CentOS 8/Stream 使用 dnf。
首先安装 EPEL 源:
yum install epel-release -y
然后安装 Nginx:
yum install nginx -y
启动服务:
systemctl start nginx
systemctl enable nginx
同样检查状态:
systemctl status nginx
CentOS 的默认防火墙(firewalld)通常是开启的,如果不放行端口,即使 Nginx 启动成功也无法访问。
放行 HTTP 和 HTTPS:
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload
CentOS 的 Nginx 配置路径通常是:
/etc/nginx/nginx.conf/etc/nginx/conf.d//var/log/nginx/
相比 Ubuntu,CentOS 更倾向于集中式 conf.d 管理方式。
四、Nginx 基础结构与核心配置逻辑
很多人安装完 Nginx 后,只停留在“能打开页面”,但真正的核心在配置结构。
Nginx 的核心配置分为三个层级:
第一层是全局层(nginx.conf),主要控制 worker 进程数量、日志格式、gzip 压缩等基础性能参数。
第二层是 http 层,这一层定义了所有 HTTP 行为,比如 MIME 类型、虚拟主机、缓存规则等。
第三层是 server 层,也就是我们常说的“站点配置”,每一个 server block 对应一个网站或服务入口。
一个最基础的 server 配置如下:
server {
listen 80;
server_name example.com;
root /var/www/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
这一段看似简单,但实际上已经包含了 Nginx 最核心的请求处理逻辑:监听端口、匹配域名、指定目录、以及 URI 查找策略。
五、虚拟主机配置与多站点管理
在实际服务器中,很少只部署一个站点,更多情况是一个 Nginx 承载多个域名。
在 Ubuntu 中可以通过 sites-available 创建多个配置:
/etc/nginx/sites-available/site1.conf
/etc/nginx/sites-available/site2.conf
然后通过软链接启用:
ln -s /etc/nginx/sites-available/site1.conf /etc/nginx/sites-enabled/
CentOS 则通常直接在 /etc/nginx/conf.d/ 下创建多个 .conf 文件即可。
这种结构的优势是清晰且易于扩展,适合 VPS 或云服务器部署多个项目。
六、反向代理配置(实际生产最常用)
Nginx 真正的价值往往体现在反向代理上,比如把 Node.js、Python Flask、Java Spring Boot 服务统一入口到 80/443。
一个典型反向代理配置:
server {
listen 80;
server_name api.example.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这一层结构的关键点在于 header 透传,否则后端服务无法获取真实 IP。

七、性能优化与生产环境建议
Nginx 默认配置只是“能用”,但在高并发环境下需要调整 worker 相关参数。
常见优化如下:
worker_processes auto;
worker_connections 10240;
multi_accept on;
use epoll;
同时建议开启 gzip:
gzip on;
gzip_types text/plain text/css application/json application/javascript;
日志方面,如果访问量很大,可以考虑按天切割日志,避免单文件过大影响 IO。
八、安全配置(容易被忽略但非常重要)
生产环境 Nginx 必须做基础安全加固,否则非常容易被扫描或攻击。
可以添加一些基础限制:
server_tokens off;
限制请求大小:
client_max_body_size 20m;
防止简单恶意请求:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
在 server 中启用:
limit_req zone=one burst=20;
这些配置虽然简单,但在真实攻击环境中非常有效。
九、常见问题排查思路
很多 Nginx 问题其实不是 Nginx 本身的问题,而是系统层或配置层错误。
如果无法启动,第一步永远是:
nginx -t
它会直接告诉你配置错误位置。
如果 502 Bad Gateway,大概率是后端服务没启动或者 socket 不通。
如果无法访问,先检查:
- 防火墙是否放行
- 云服务器安全组是否开放
- Nginx 是否监听正确端口
从实际运维角度来看,Nginx 并不是一个“安装完就结束”的软件,而是一个长期配置优化的入口层组件。在 Ubuntu 和 CentOS 上,它的安装只是第一步,更重要的是后续的结构设计,比如多站点拆分、反向代理统一入口、日志管理、HTTPS 加密以及性能调优。

全球服务器测评





