CentOS 安装 Nginx 的最佳实践:高效、稳定、可维护

在生产环境中,CentOS 安装 nginx 是构建高性能 Web 服务的关键一步,Nginx 以高并发、低资源占用著称,而 CentOS 作为企业级 Linux 发行版,稳定性与兼容性俱佳,二者结合,可快速部署安全可靠的反向代理、负载均衡与静态资源服务器,以下为经过生产环境验证的完整部署方案。
安装前准备:环境确认与依赖清理
-
确认系统版本
执行cat /etc/centos-release,确认为 CentOS 7 或 CentOS 8(推荐 CentOS 7.9 或 CentOS Stream 8),CentOS 6 已停止支持,不建议使用。 -
关闭防火墙干扰项(非生产环境可跳过)
# 临时关闭 systemctl stop firewalld # 永久禁用(仅测试环境) systemctl disable firewalld
-
清理旧版 Nginx 残留
yum remove -y nginx nginx-mod nginx-all-modules rm -rf /etc/nginx /var/log/nginx /var/cache/nginx
推荐安装方式:官方 RPM 源部署(非 EPEL)
优先使用 Nginx 官方仓库,避免 EPEL 源版本滞后、模块缺失问题。
-
创建官方源配置文件
cat > /etc/yum.repos.d/nginx.repo << 'EOF' [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true EOF
-
导入 GPG 密钥
rpm --import https://nginx.org/keys/nginx_signing.key
-
安装最新稳定版 Nginx
yum clean all && yum install -y nginx
✅ 优势:版本最新(当前稳定版为 1.24.x),支持 TLS 1.3、HTTP/3(需额外编译),模块完整,安全补丁响应及时。
核心配置优化:安全与性能双提升
安装完成后,必须调整默认配置以满足生产需求。
基础配置项(/etc/nginx/nginx.conf)
-
worker 进程数:设为 CPU 核心数
worker_processes auto;
-
连接数优化(单进程最大连接数 =
worker_connections × worker_processes)events { worker_connections 10240; # 常规业务建议 5120~10240 use epoll; multi_accept on; }
安全加固关键配置
-
隐藏版本号
server_tokens off;
-
禁止未绑定域名访问
在server块中添加:if ($host !~ ^(yourdomain.com|www.yourdomain.com)$ ) { return 444; } -
限制 HTTP 方法(仅允许 GET/POST/HEAD)
if ($request_method !~ ^(GET|POST|HEAD)$ ) { return 405; }
静态资源缓存策略(提升响应速度)
location ~ .(js|css|png|jpg|jpeg|gif|ico|svg|woff2?)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
服务管理与开机自启验证
-
启动服务
systemctl start nginx
-
设置开机自启
systemctl enable nginx
-
验证运行状态

systemctl status nginx -l # 查看详细日志 curl -I http://localhost # 检查响应头(确认 server_tokens 已隐藏)
⚠️ 常见故障排查:
- 端口被占用 →
netstat -tuln | grep :80- 配置语法错误 →
nginx -t -c /etc/nginx/nginx.conf- SELinux 阻止访问 →
setsebool -P httpd_can_network_connect 1
进阶建议:模块扩展与性能监控
-
启用 Gzip 压缩(减少 60%+ 传输体积)
gzip on; gzip_types text/plain text/css application/json application/javascript; gzip_min_length 1024;
-
接入 Prometheus 监控(需编译
nginx-vts-module)
或使用stub_status模块(默认启用):location /nginx_status { stub_status; allow 127.0.0.1; deny all; } -
定期更新
yum update -y nginx # 每月执行一次安全补丁更新
相关问答(FAQ)
Q1:CentOS 8 已停止维护,还能用官方源安装 Nginx 吗?
A:可以,CentOS 8 停止维护后,官方源仍支持至 2029 年,但建议迁移到 CentOS Stream 或 Rocky Linux,若继续使用 CentOS 8,需手动将 baseurl 中的 $releasever 替换为 8。
Q2:安装后访问 403 Forbidden,如何快速定位问题?
A:按顺序检查:① 文件权限(ls -l /usr/share/nginx/html);② SELinux 策略(sestatus + getenforce);③ nginx.conf 中 user nginx; 与文件属主是否匹配。
您在部署过程中是否遇到过配置冲突或性能瓶颈?欢迎在评论区分享您的解决方案,一起优化生产环境稳定性!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/172387.html