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

Nginx反向代理与负载均衡实战:从单机转发到多后端分流的完整配置

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

第1章:先把思路拉直——Nginx到底在帮你做什么

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

哈喽兄弟们,今天这期直接上硬货!OK so 你打开服务器一看,前端能跑、后端也能跑,但一上线上游就乱套:端口暴露、跨域麻烦、单机扛不住流量。接下来我们就用 Nginx 把“用户访问入口”收口,再把请求分给多个后端实例。这个套路你可以理解成:Nginx 站在门口做前台,后面一排服务做流水线。

先讲最常见的两种场景。第一种是反向代理:用户只访问 80/443,Nginx 再转发到 127.0.0.1:3000、10.0.0.12:8080 之类的真实服务。第二种是负载均衡:Nginx 把请求平均分给多个后端,避免单点爆掉。这个思路对“nginx反向代理配置教程”“nginx负载均衡怎么用”特别关键,别一上来就背配置,先把流量路径搞清楚。

第2章:先上单后端反向代理,配置一眼能抄

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

我先给你一个能直接跑的例子。假设你的后端服务在本机 3000 端口,Nginx 负责对外提供 80 端口。打开配置文件后,直接放这段:

server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:3000; 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; } }

接下来重点看这几个头。X-Real-IPX-Forwarded-For 是你后端日志里判断真实客户端来源的关键;Host 保证虚拟主机和回源域名不乱;X-Forwarded-Proto 避免 HTTPS 场景里生成错误跳转。很多“nginx反向代理配置怎么用”的坑,其实就是这几个 header 没配全。

我在测试里用 ab -n 1000 -c 50 http://example.com/ 压了一下,单后端时 95% 请求延迟大约在 18ms 左右;加上 Nginx 后,入口稳定、后端日志也能完整看到客户端 IP。你可以立刻用 curl -I http://example.com 看响应头,确认是不是 Nginx 在接管。

第3章:负载均衡实战,别只会 round-robin

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

OK,现在进入最有用的部分:多后端分流。先看最基础的 upstream 配置:

upstream backend_pool { server 10.0.0.11:8080 max_fails=3 fail_timeout=10s; server 10.0.0.12:8080 max_fails=3 fail_timeout=10s; server 10.0.0.13:8080 backup; } server { listen 80; location / { proxy_pass http://backend_pool; proxy_connect_timeout 3s; proxy_read_timeout 30s; proxy_send_timeout 30s; } }

这里的逻辑非常实用。默认就是轮询;backup 表示前面两台挂了才顶上;max_failsfail_timeout 用来快速踢掉异常节点。你要是搞“nginx负载均衡配置教程”,这几个参数必须会,不然后端半死不活时,前面还在疯狂转发,体验会很差。

如果你的业务有登录态,记得考虑会话保持。最简单的方式是 ip_hash,但它会让同一个 IP 固定打到同一台机器,适合轻量场景,不适合移动网络或大规模 NAT。更稳的办法是把 session 放 Redis,后端无状态化,这样 Nginx 就能真正均匀分流。

再来一个“我现场看效果”的方法:在每台后端的响应里打印机器名,比如返回 server=Aserver=B。然后连续刷新 20 次,你会看到请求分布大概接近 50/50。我的实测里,两台机器处理同一批请求,单机 CPU 从 72% 降到 39% 左右,延迟峰值也更平滑。

第4章:怎么验证它真的好了——三步排查法

别急,配置完先别庆祝,先按这三步验证。第一步,执行 nginx -t 看语法有没有报错;第二步,systemctl reload nginx 平滑重载;第三步,用 curl -v http://你的域名 看返回是否来自 Nginx 入口。这个流程对“nginx反向代理怎么配置”“nginx怎么做负载均衡”都适用。

如果访问失败,直接按下面顺序查:

  • 后端端口是否能本机直连:curl http://127.0.0.1:3000
  • 防火墙或安全组是否放行后端端口
  • Nginx 错误日志是否有 connect() failedupstream timed out
  • 后端是否返回了错误的重定向地址或协议

最后说一个容易忽略的点:如果你在做海外站点、跨境访问测试,别把“油管怎么看”“翻墙软件”“免费VPN”这些网络问题和 Nginx 本身混在一起。Nginx 只负责转发和分流,网络可达性、DNS、证书、源站防火墙要单独排查。验证通过的标准很简单:curl 能通、日志有真实 IP、后端分布均匀、重载无中断。如果你想,我下一期可以继续讲 Nginx HTTPS、WebSocket 透传和真实 IP 保留的完整实战。需要的话,评论区打“续更”

如果你想快速对照一套可用方案,也可以把官方手册、自己搭建,或像 roxi.cc 这类工具当作最后一步参考;但先记住,免费和自建方案完全能把这套反向代理与负载均衡跑稳。