Nginx 是运维部署中最常用的反向代理服务器。反向代理隐藏了后端服务细节,同时天然支持负载均衡与高可用。
基础反向代理配置
server { listen 80; server_name blog.example.com;
location / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
|
负载均衡:upstream
upstream backend { server 10.0.0.1:8080 weight=3; server 10.0.0.2:8080; server 10.0.0.3:8080 backup; }
server { listen 80; location / { proxy_pass http://backend; } }
|
负载均衡的常见策略:
| 策略 |
关键字 |
适用场景 |
| 轮询 |
默认 |
后端能力均等 |
| 权重 |
weight=N |
机器性能不均 |
| IP 哈希 |
ip_hash |
需要会话保持 |
| 最小连接 |
least_conn |
长耗时请求多 |
配置 HTTPS
server { listen 443 ssl; server_name blog.example.com;
ssl_certificate /etc/nginx/certs/fullchain.pem; ssl_certificate_key /etc/nginx/certs/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; }
|
常见坑
- 忘记
proxy_set_header Host:后端拿到的是内网地址,站点可能跳转异常
- 超时设置过短:大文件上传要调大
proxy_read_timeout
- upstream 节点宕机:默认会有 fail_timeout 检测,配合
max_fails 使用更稳妥
nginx -t && systemctl reload nginx
|