温馨提示×

nginx在centos上的最佳实践是什么

小樊
45
2025-09-17 20:17:55
栏目: 智能运维

Nginx在CentOS上的最佳实践

1. 安装:选择稳定来源与最小化安装

优先通过CentOS官方Yum仓库或Nginx官方仓库安装,避免第三方源的安全风险。若需最新稳定版,可添加Nginx官方仓库:

sudo yum install -y epel-release sudo rpm --import http://nginx.org/keys/nginx_signing.key sudo yum install -y http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm sudo yum install -y nginx 

安装后通过nginx -v验证版本,确保安装成功。

2. 安全加固:降低攻击面

  • 隐藏版本信息:修改nginx.conf,添加server_tokens off;,避免错误页面泄露Nginx版本,减少针对性攻击。
  • 限制访问权限:通过allow/deny指令限制敏感目录(如/admin)的IP访问,或使用geo模块定义IP白名单。
  • 禁用目录遍历:在静态文件配置中添加autoindex off;,防止用户列出目录内容。
  • 使用HTTPS:通过Let’s Encrypt免费获取SSL证书,配置HTTP/2协议(listen 443 ssl http2;),并优化SSL参数(如ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers HIGH:!aNULL:!MD5;)。
  • 调整安全头:添加add_header X-Content-Type-Options "nosniff";(防止MIME类型嗅探)、add_header X-Frame-Options "SAMEORIGIN";(防止点击劫持)。

3. 性能优化:提升并发处理能力

  • 调整工作进程:设置worker_processes auto;(自动匹配CPU核心数),避免进程过多导致上下文切换开销。
  • 优化连接数:在events块中设置worker_connections 1024;(单进程最大连接数),配合use epoll;(Linux高效事件模型)提升高并发处理能力。
  • 启用压缩:通过gzip on;开启Gzip压缩,设置gzip_comp_level 5;(平衡压缩率与CPU消耗)、gzip_types text/plain text/css application/json;(针对文本类资源压缩),减少传输数据量。
  • 静态文件缓存:对图片、CSS、JS等静态资源设置expires 30d;(缓存30天)和add_header Cache-Control "public";,降低后端负载。
  • 长连接优化:设置keepalive_timeout 65;(保持连接65秒)、keepalive_requests 100;(单连接最大请求数),减少TCP握手开销。

4. 高可用与负载均衡:保障服务连续性

  • 主备服务器配置:使用Keepalived实现VRRP协议,配置主备Nginx服务器的虚拟IP(VIP),主服务器故障时自动切换至备用服务器。
  • 负载均衡:通过upstream模块定义后端服务器集群,使用least_conn;(最少连接算法)分配请求,提升动态内容处理效率。例如:
    upstream backend { least_conn; server backend1.example.com; server backend2.example.com; } server { location / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 

5. 配置管理与维护:确保健壮性

  • 配置文件分离:将虚拟主机配置放在/etc/nginx/conf.d/目录下(如example.conf),通过符号链接激活(ln -s /etc/nginx/conf.d/example.conf /etc/nginx/sites-enabled/),便于管理。
  • 语法检查:修改配置文件后,使用nginx -t命令测试语法,避免因配置错误导致服务中断。
  • 日志优化:调整日志级别(error_log /var/log/nginx/error.log crit;),减少不必要的访问日志记录(access_log off;),提升性能;定期归档日志(如使用logrotate)。
  • 开机自启:通过systemctl enable nginx设置Nginx开机自动启动,确保服务器重启后服务可用。

6. 动态内容处理:与后端协作

  • PHP-FPM集成:安装PHP-FPM(sudo yum install -y php-fpm),配置www.conf中的listen = /run/php-fpm/php-fpm.sock(Unix socket通信)和user = nginx(与Nginx运行用户一致);在Nginx中添加location ~ \.php$块,设置fastcgi_pass unix:/run/php-fpm/php-fpm.sock;,实现PHP动态内容处理。
  • 动静分离:将静态文件(如/static/)直接由Nginx处理(root /var/www/static;),动态请求(如/api/)转发至后端服务器(如Tomcat、PHP-FPM),提升整体性能。

7. 监控与故障排查:及时发现问题

  • 状态监控:通过nginx-module-vts模块收集Nginx状态信息(如请求数、连接数),结合htoptop等工具监控系统资源使用情况。
  • 日志分析:使用awkgrep等命令分析Nginx访问日志(/var/log/nginx/access.log),识别高频错误(如404、500)或恶意请求(如频繁扫描);借助ELK(Elasticsearch+Logstash+Kibana)实现可视化分析。
  • 备份配置:定期备份/etc/nginx/目录(如使用tar -czvf nginx_backup.tar.gz /etc/nginx/),防止配置丢失。

0