全球服务器测评

Ubuntu / CentOS 系统上安装与配置 Nginx

在服务器环境里,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 加密以及性能调优。

未经允许不得转载:全球服务器测评 » Ubuntu / CentOS 系统上安装与配置 Nginx