一、三种主流安装方式
归档里已将 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/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二、安装后的快速验证
在任何写入操作开始前,先用版本检查和端口监听确认 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 nginxreload 仅重新加载配置文件并平滑过渡,已有连接不断开;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
sudo yum install -y epel-release 补充扩展仓库后重新执行安装命令。使用 CentOS Stream 时应先检查当前仓库状态。sudo lsof -i:80 查看占用进程。常见原因是 Apache、httpd 或其它容器已监听 80 端口;若为 httpd,可停用 sudo systemctl stop httpd,再让 Nginx 接管监听。sudo yum install -y pcre pcre-devel。Nginx rewrite 模块依赖 PCRE 支持,若漏装 devel 包会在 ./configure 阶段报错。server_name 下方缺少分号。用 sudo nginx -t 会直接输出具体文件和行号,方便定点修正。docker ps 中端口映射是否正常,其次检查防火墙是否放行对应端口。若容器内 root 指向的目录为空,首页也会返回 403。