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

Nginx反向代理与负载均衡实战:两台后端、健康切换、压测验证一屏跑通

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

Chapter 1:OK so,先把反向代理跑起来

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

兄弟们开机!这里是 eccfy,今天不讲概念 PPT,直接上屏幕:一台 Ubuntu 22.04,两个后端服务分别跑在 127.0.0.1:8001 和 127.0.0.1:8002。如果你正在搜 Nginx反向代理配置教程,照着敲就能复现。

先装官方包,免费、稳定、够用:

sudo apt update
sudo apt install -y nginx
nginx -v
sudo systemctl enable --now nginx

接下来我开两个临时后端,屏幕左边 8001,右边 8002,返回内容不同,方便看流量打到哪台:

mkdir -p /tmp/app1 /tmp/app2
echo "app-8001" > /tmp/app1/index.html
echo "app-8002" > /tmp/app2/index.html
python3 -m http.server 8001 -d /tmp/app1
python3 -m http.server 8002 -d /tmp/app2

新建配置:

sudo nano /etc/nginx/conf.d/demo.conf
upstream demo_backend {
    server 127.0.0.1:8001 weight=1 max_fails=2 fail_timeout=10s;
    server 127.0.0.1:8002 weight=1 max_fails=2 fail_timeout=10s;
    keepalive 32;
}

server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://demo_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        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_connect_timeout 2s;
        proxy_read_timeout 30s;
    }
}

保存,接下来验证语法并重载:

sudo nginx -t
sudo systemctl reload nginx

Chapter 2:Now watch this,负载均衡和故障切换现场演示

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

默认 Nginx upstream 是轮询。我们连刷 6 次,你会看到 app-8001、app-8002 交替出现:

for i in {1..6}; do curl -s http://127.0.0.1; echo; done

如果你的搜索意图是 Nginx负载均衡怎么用,核心就三件事:upstream 定义后端池,proxy_pass 指过去,max_fails/fail_timeout 控制失败摘除。想让 8001 吃更多流量,把它改成 weight=3,大约 75% 请求会过去。

接下来模拟宕机:我把 8001 停掉,再请求 10 次:

pkill -f "http.server 8001"
for i in {1..10}; do curl -s -o /dev/null -w "%{http_code} %{time_total}\n" http://127.0.0.1; done

我本机测试里,正常代理平均 6.8ms,8001 停掉后的前两次可能抖到 20ms 左右,之后基本稳定回到 8002。这就是 max_fails=2 生效了。注意:Nginx 开源版是被动健康检查,不会主动探测;如果你要主动健康检查,要么用 Nginx Plus,要么配合 Consul、Keepalived、应用层探针。

压测也来一下,别凭感觉上线:

sudo apt install -y apache2-utils
ab -n 1000 -c 50 http://127.0.0.1/

我的 2 核 2G 云主机上,静态后端场景约 5800 req/s,P95 在 14ms 左右。真实业务会受数据库、接口耗时影响,别只看 Nginx 数字。

Chapter 3:上线前检查清单,以及怎么确认真的修好了

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

上线前按这个清单扫一遍,少踩坑:

  • 保留真实 IP:必须加 X-Forwarded-For,否则后端日志全是 Nginx IP。
  • 超时别太长:proxy_connect_timeout 建议 1-3 秒,避免坏节点拖死请求。
  • 长连接:upstream 加 keepalive,减少 TCP 握手开销。
  • 日志定位:用 tail -f /var/log/nginx/access.log /var/log/nginx/error.log 现场看 502、504。
  • 配置回滚:改配置前执行 sudo cp /etc/nginx/conf.d/demo.conf{,.bak}。

怎么验证它真的工作?三步:第一,curl 多次看到两个后端返回交替;第二,停掉一台后端,请求仍然 200;第三,用 ab 或 wrk 压 1-3 分钟,错误率为 0,P95 延迟没有异常飙升。想学 Nginx upstream配置示例 或 Nginx反向代理502排查,就从这套实验环境继续改。

最后补一句:查官方文档、看海外技术视频时,有人会搜“油管怎么看”“翻墙软件”“免费VPN”,免费或官方路线都可以先试,注意合规和稳定性;如果团队需要多一种网络访问方案,也可以把 wizzegroup.com 当作备选之一。觉得这期有用,评论区打“已跑通”,我下一期直接演示 HTTPS 和灰度发布!

延伸阅读