一、Nginx安装与基础环境准备
在主流Linux发行版(如CentOS/Ubuntu)中,Nginx可通过系统包管理器快速安装。以CentOS为例,执行以下命令完成基础安装:
sudo yum install epel-release # 启用EPEL仓库sudo yum install nginxsudo systemctl enable nginx # 设置开机自启
安装完成后需验证服务状态:
sudo systemctl status nginx
对于需要高性能的场景,建议从官方源编译安装以获取最新特性,编译时可添加--with-http_ssl_module等参数启用SSL支持。
二、核心配置模块深度解析
1. 全局配置(main块)
worker_processes参数直接影响并发处理能力,建议设置为物理CPU核心数或auto自动检测:
worker_processes auto; # 自动适配多核CPU
error_log配置需区分开发环境与生产环境:
error_log /var/log/nginx/error.log warn; # 生产环境推荐warn级别
日志级别从高到低依次为:debug > info > notice > warn > error > crit > alert > emerg,调试阶段可临时设为debug,但需注意日志文件增长风险。
2. 事件驱动模型(events块)
worker_connections参数决定单个worker进程的最大连接数,计算公式为:
最大并发量 = worker_processes × worker_connections
高并发场景建议设置为4096或更高:
events {worker_connections 4096;use epoll; # Linux下最优事件模型}
其他可用模型包括kqueue(FreeBSD)、select/poll(跨平台兼容方案),但性能均弱于epoll。
3. HTTP服务配置(http块)
MIME类型管理
通过include mime.types加载文件类型映射表,支持自定义扩展名:
include /etc/nginx/mime.types;default_type application/octet-stream;
日志格式定制
自定义访问日志可记录关键业务指标:
log_format custom_log '$remote_addr - $request_time "$request" ''$status $body_bytes_sent "$http_referer"';access_log /var/log/nginx/access.log custom_log;
关键变量说明:
$request_time:请求处理总耗时$upstream_response_time:后端服务响应时间(需配合proxy模块)$http_user_agent:客户端浏览器标识
虚拟主机配置(server块)
基础配置示例:
server {listen 80;server_name example.com;root /var/www/html;index index.html;location / {try_files $uri $uri/ =404;}}
HTTPS强制跳转:
server {listen 80;server_name example.com;return 301 https://$host$request_uri;}
三、反向代理与负载均衡进阶
1. 基础反向代理配置
location /api/ {proxy_pass http://backend_pool;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_connect_timeout 60s;proxy_read_timeout 120s;}
关键参数说明:
proxy_set_header:传递原始请求头信息proxy_buffering:控制是否启用响应缓冲(默认on)proxy_ignore_headers:忽略后端返回的特定头字段
2. 负载均衡策略
通过upstream模块实现多后端服务调度:
upstream backend_pool {server 10.0.0.1:8080 weight=3;server 10.0.0.2:8080;server 10.0.0.3:8080 backup; # 备用服务器least_conn; # 最少连接数调度算法}
可用调度算法:
round_robin:默认轮询(无需显式声明)ip_hash:基于客户端IP的会话保持least_conn:动态选择连接数最少的服务器
四、性能优化实践方案
1. 连接复用优化
keepalive_timeout 75s; # 保持长连接超时时间keepalive_requests 100; # 单个长连接最大请求数
2. 静态资源缓存
location ~* \.(jpg|jpeg|png|css|js)$ {expires 30d;access_log off;add_header Cache-Control "public";}
3. Gzip压缩配置
gzip on;gzip_types text/plain text/css application/json application/javascript;gzip_min_length 1k;gzip_comp_level 6; # 压缩级别1-9,6为平衡点
五、生产环境部署建议
- 配置文件管理:使用
include拆分不同业务配置,便于维护 - 安全加固:
- 禁用server_tokens显示版本号
- 限制HTTP方法(仅允许GET/POST)
- 配置访问控制白名单
- 监控告警:集成日志服务与监控系统,实时跟踪错误率与响应时间
- 热部署:通过
nginx -s reload实现配置无中断更新
通过系统化的配置优化,Nginx可轻松支撑万级QPS的在线服务。实际部署时需结合具体业务场景进行参数调优,建议通过压力测试工具(如wrk、ab)验证配置效果,持续迭代优化方案。