Nginx高级用法案例汇总
一、负载均衡高级策略
1. 加权轮询算法优化
通过为不同性能的服务器设置权重,使性能强劲的服务器承担更多请求:
upstream backend {server server1 weight=3;server server2 weight=1;
}
2. 会话保持机制
确保同一用户请求始终分配到同一后端服务器:
upstream backend {ip_hash;server server1;server server2;
}
3. 最小连接数负载均衡
选择当前连接数最少的服务器处理请求:
upstream backend {least_conn;server server1;server server2;
}
二、反向代理高级配置
1. 基于URL的精细化反向代理
针对不同URL路径设置不同代理目标:
location /api/ {proxy_pass http://api_backend;
}location /static/ {proxy_pass http://static_backend;
}
2. 反向代理缓存控制
减轻后端服务器压力,加快响应速度:
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache_zone:10m;location / {proxy_cache cache_zone;proxy_cache_valid 200 302 10m;proxy_cache_valid 404 1m;proxy_pass http://backend;
}
三、安全配置
1. IP白名单/黑名单
# IP白名单
location /admin {allow 192.168.1.0/24;deny all;
}# IP黑名单
location / {deny 192.168.1.100;allow all;
}
2. 请求限制
location /api {limit_except GET {deny all;}
}
3. User-Agent限制
if ($http_user_agent ~* "BadBot|Scrapy") {return 403;
}
4. 安全HTTP头部配置
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload";
add_header Content-Security-Policy "default-src 'self'";
5. 隐藏Nginx版本信息
server_tokens off;
add_header Server "CustomServer";
四、高级性能优化
1. 全局优化配置
worker_processes auto;
worker_cpu_affinity 0001 0010 0100 1000; # 适用于4核CPUevents {use epoll;worker_connections 51200;multi_accept on;
}
2. 连接处理优化
http {proxy_connect_timeout 60s;proxy_read_timeout 60s;proxy_send_timeout 60s;
}
3. 限流配置
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;location / {limit_req zone=one burst=5;
}
五、高级应用场景
1. 静态资源代理
location /images/ {root /var/www/static;expires 30d;add_header Cache-Control "public";
}
2. 解决前端跨域问题
location /api {proxy_pass http://backend;add_header 'Access-Control-Allow-Origin' '*';add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
3. 作为下载服务器
location /download/ {alias /var/www/downloads/;autoindex on;autoindex_exact_size off;autoindex_localtime on;
}
六、Nginx可视化管理
Nginx-GUI使用案例
-
安装配置:
下载地址:
https://nginxui.com/zh_CN/guide/about.html
或https://github.com/onlyGuo/nginx-gui- 下载对应系统版本安装包
- 修改conf/conf.properties配置文件
- Linux需重命名lib/bin/java_vms为java_vms_nginx_gui
-
启动服务:
sudo chmod -R 777 nginx-gui/ nohup bash /root/web/nginx-gui/startup.sh > logs/nginx-gui.out &
-
访问:默认地址
http://localhost:8889
,用户名/密码:admin/admin
七、最佳实践总结
- 安全第一:始终隐藏Nginx版本信息,配置必要的安全HTTP头部
- 性能优化:根据服务器硬件配置合理的worker_processes和worker_connections
- 负载均衡策略:根据实际业务需求选择合适的负载均衡算法
- 缓存策略:合理配置反向代理缓存,减轻后端压力
- 监控与日志:启用状态页配置,定期分析访问日志
以上配置示例均基于Nginx 1.18+版本,可根据实际环境进行适当调整。在生产环境中使用前,建议在测试环境进行充分验证。