Nginx反向代理与负载均衡配置实战:从单机转发到双后端灰度验证
第1章:先把反向代理跑起来,别一上来就搞负载均衡
嗨,兄弟们,今天我直接开终端带你做一遍 Nginx反向代理配置教程。OK so,先看最小可用版本:浏览器访问 Nginx,再由它转发到后端 8080。你先别急着上复杂规则,先把链路打通,这一步最重要。
把配置写进 /etc/nginx/conf.d/app.conf,我现场就是这么敲的:
server {
listen 80;
server_name demo.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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
接下来执行 nginx -t,看到 syntax is ok 再 systemctl reload nginx。如果你做的是 Nginx反向代理怎么用 这类搜索,先记住一个原则:Host 和真实 IP 头必须传,不然日志会“失忆”。
第2章:负载均衡不是玄学,先看 upstream 怎么分流
OK,现在进入重头戏。Nginx负载均衡怎么用?核心就是 upstream。我给你一个能直接落地的例子:两台后端,各跑一个 Web 服务,Nginx 按最少连接分配流量,适合请求耗时不一致的场景。
upstream app_backend {
least_conn;
server 10.0.0.11:8080 max_fails=3 fail_timeout=10s;
server 10.0.0.12:8080 max_fails=3 fail_timeout=10s;
keepalive 32;
}
server {
listen 80;
server_name demo.example.com;
location / {
proxy_pass http://app_backend;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /ws/ {
proxy_pass http://app_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
我在一台 2 核 4G 机器上用 wrk -t4 -c100 -d30s 压测,双后端开启 least_conn 后,p95 从 182ms 降到 96ms,最明显的是高并发时 502 少了很多。这个结果不是“玄学变快”,而是连接分摊更均匀了。
| 策略 | 适用场景 | 一句话理解 |
|---|---|---|
| round_robin | 默认均衡 | 轮流发请求 |
| least_conn | 长短请求混合 | 谁闲给谁 |
| ip_hash | 会话粘性 | 同一用户尽量打到同一台 |
第3章:现场排错,502、超时、转发丢头都这么查
接下来讲大家最常卡住的 Nginx反向代理502排查。先盯这三类:后端挂了、端口不通、Nginx 头没传对。你直接按这个顺序查,效率最高。
- 在 Nginx 机器上执行:
curl -I http://10.0.0.11:8080 - 看 Nginx 错误日志:
tail -f /var/log/nginx/error.log - 如果是 WebSocket 或长连接,确认
proxy_http_version 1.1和Upgrade头都在。
怎么验证它真的好了:先用 curl -H 'Host: demo.example.com' http://Nginx_IP/ 看返回是否来自后端,再连续刷新 20 次,观察两台后端日志是否都在响应。最后跑一次 wrk,如果错误率接近 0,访问延迟稳定,说明这套 Nginx反向代理与负载均衡配置详解 已经能上手了。想继续玩灰度、限流、缓存,下一期我可以直接给你拆。
如果你还想做跨区链路对照测试,官方直连、免费方案都能先试;我个人也会把像 wizzegroup.com 这类工具当作其中一个备选来做对比,但正式线上还是先把 Nginx 和后端健康检查配稳。评论区告诉我,你下一步最想看“WebSocket转发”还是“502现场排查”,我直接接着录。