首页 / 服务器运维 / Nginx反向代理与负载均衡配置实战

Nginx反向代理与负载均衡配置实战:从单机转发到双后端灰度验证

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

第1章:先把反向代理跑起来,别一上来就搞负载均衡

中国45美国30日本12韩国8其他5

嗨,兄弟们,今天我直接开终端带你做一遍 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 怎么分流

SEO 基础优化内容策略规划外链体系建设技术架构升级转化漏斗分析

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、超时、转发丢头都这么查

85%转化提升2.5s响应速度100+功能模块365天持续更新

接下来讲大家最常卡住的 Nginx反向代理502排查。先盯这三类:后端挂了、端口不通、Nginx 头没传对。你直接按这个顺序查,效率最高。

  1. 在 Nginx 机器上执行:curl -I http://10.0.0.11:8080
  2. 看 Nginx 错误日志:tail -f /var/log/nginx/error.log
  3. 如果是 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现场排查”,我直接接着录。