问答中心

NG 安装与基础配置

本栏目集中整理 Nginx 在 CentOS 环境中的常用安装方式、初始目录结构、站点配置方法以及 systemd 托管、防火墙放行和启动日志定位等基础操作内容。无论刚接触 Nginx 还是准备重新梳理服务器环境,均可在对应章节找到可直接执行的步骤与配置样例。

#一、三种主流安装方式

归档里已将 CentOS 环境常用的安装路径整理为三组:yum 官方源安装适合快速上线;源码编译适合定制模块;Docker 容器适合隔离环境。建议根据服务器用途和组件接入条件选择。

1使用 Yum 源安装

CentOS 8 / Stream 用户可直接使用官方 AppStream 仓库安装 Nginx,操作条目最少,适合作为初始化环境的首选方案。

sudo yum install -y nginx sudo systemctl enable nginx sudo systemctl start nginx

安装完成后,可通过 nginx -v 查看版本号。生产环境建议先执行 nginx -t 校验配置。

2源码编译安装

需要接入第三方模块或调整编译参数时,可选择源码安装。ng官方网站的文档中整理了常用编译参数参考,可避免因为缺少依赖反复重试。

sudo yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel wget https://nginx.org/download/nginx-1.26.2.tar.gz tar xzf nginx-1.26.2.tar.gz && cd nginx-1.26.2 ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_v2_module make && sudo make install
提示:源码安装的 Nginx 默认二进制路径是 /usr/local/nginx/sbin/nginx。执行 -t 测试时请确认使用的是配置目录下 nginx.conf

3Docker 容器方式

容器化环境中,使用镜像可快速拉起独立的 Nginx 实例。数据目录与日志目录建议挂载到宿主机持久化。

docker run -d --name ng-web \ -p 80:80 -p 443:443 \ -v /www/html:/usr/share/nginx/html \ -v /www/nginx/conf:/etc/nginx/conf.d \ nginx:1.26-alpine
1.26
常见稳定主线版本参考
3 种
安装方式已整理流程
60s
yum 快速完成基础安装

#二、安装后的快速验证

在任何写入操作开始前,先用版本检查和端口监听确认 Nginx 是否已正常运行。执行以下三条命令,不需要额外工具。

sudo nginx -v sudo systemctl status nginx sudo ss -lntp | grep -E ':80|:443'

若看到 LISTEN 绑定在 80/443 端口,说明主进程已经接管监听;之后再执行 curl -I http://127.0.0.1 检查首页响应。

#三、配置目录与文件说明

清楚 Nginx 的文件目录规划,后续维护虚拟主机、证书和日志时会减少很多不必要的搜索时间。以下为 CentOS 安装后的默认布局。

/etc/nginx/nginx.conf # 主配置文件 /etc/nginx/conf.d/ # 自定义配置目录 /usr/share/nginx/html/ # 默认站点根目录 /var/log/nginx/access.log # 访问日志 /var/log/nginx/error.log # 错误日志 /run/nginx.pid # 进程 PID 文件
  • nginx.conf:全局配置入口,包含 worker 进程数、事件模型、HTTP 基础项;不建将业务配置直接写在此文件内。
  • conf.d 目录:每个站点或应用创建一个 .conf 文件,便于单独禁用与备份回滚。

#四、基础站点配置

创建一个静态站点的最小配置包含三部分:监听端口、server_name、root 与 index 定位。以下样例可直接写入 /etc/nginx/conf.d/example.conf

server { listen 80; server_name example.com www.example.com; root /usr/share/nginx/html/example; index index.html; access_log /var/log/nginx/example.access.log; error_log /var/log/nginx/example.error.log; }

编辑完成后执行 sudo nginx -t 检查,再执行 sudo systemctl reload nginx 重载配置。注意:root 指定的目录必须存在且具备可读权限,否则会出现 403。

#五、systemd 与开机自启

CentOS 环境推荐始终使用 systemd 服务管理,不使用 nginx 直接启动方式,便于统一启停与查看状态。

sudo systemctl enable nginx sudo systemctl start nginx sudo systemctl restart nginx sudo systemctl reload nginx sudo systemctl status nginx
重载与重启的区别:reload 仅重新加载配置文件并平滑过渡,已有连接不断开;restart 则会中断连接并按新配置重建进程。线上变更配置时优先使用 nginx -t + reload

#六、日志配置与切割方案

Nginx 日志增长速度快,缺少轮转会把磁盘写满。使用系统自带的 logrotate 可以按天切割并自带压缩策略。

/var/log/nginx/*.log { daily rotate 30 compress delaycompress sharedscripts postrotate [ -f /run/nginx.pid ] && kill -USR1 `cat /run/nginx.pid` endscript }

该规则会每天对 access.log 与 error.log 执行一次轮转,保留 30 天记录并启动压缩;在 open 文件句柄层面配合 kill -USR1 通知 Nginx 重开日志。

#七、安装问题 FAQ

Q1:yum 安装时提示无可用安装包怎么办?
一般是因为 EPEL 或 AppStream 仓库未启用。通过 sudo yum install -y epel-release 补充扩展仓库后重新执行安装命令。使用 CentOS Stream 时应先检查当前仓库状态。
Q2:启动 Nginx 后 80 端口显示已被占用?
可以用 sudo lsof -i:80 查看占用进程。常见原因是 Apache、httpd 或其它容器已监听 80 端口;若为 httpd,可停用 sudo systemctl stop httpd,再让 Nginx 接管监听。
Q3:源码编译时提示缺少 PCRE 库如何处理?
执行 sudo yum install -y pcre pcre-devel。Nginx rewrite 模块依赖 PCRE 支持,若漏装 devel 包会在 ./configure 阶段报错。
Q4:修改 nginx.conf 后执行测试报语法错误?
优先查看完整错误行号,例如提示 server_name 下方缺少分号。用 sudo nginx -t 会直接输出具体文件和行号,方便定点修正。
Q5:Docker 里启动 Nginx 但宿主机无法访问页面?
先确认 docker ps 中端口映射是否正常,其次检查防火墙是否放行对应端口。若容器内 root 指向的目录为空,首页也会返回 403。

还没有建立你的首个 NG 站点?

从安装到上线,ng官方网站已整理出可直接照做的基础配置手册。留个邮箱,把最新部署手册与常用模板定期发到你的收件箱。