Nginx反向代理与负载均衡,用一台入口管理后端集群

举报
静水流深-云海 发表于 2026/09/11 10:29:21 2026/09/11
【摘要】 Nginx 几乎是现代后端的标配。聊聊它怎么当"反向代理"把请求转发给后端、怎么用 upstream 做负载均衡把流量摊到多台机器,以及动静分离这种常见的优化。

早年我部署一个服务,域名直接解析到那台机器,坏了一台全体宕机。后来上了 Nginx 做反向代理,才真正体会到"入口统一、后端可替换"的方便。这篇写最常用那部分。

一、正向 vs 反向

正向代理是帮"客户端"出去,反向代理是帮"服务端"接客。我们说的 Nginx 反向代理,是用户只认 Nginx 这一个地址,Nginx 在背后把请求转给真正的后端,用户根本不知道后面有几台机器。

二、反向代理最小配置

server {
    listen 80;
    server_name demo.example.com;

    location /api/ {
        proxy_pass http://127.0.0.1:8080/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

proxy_pass 就是转发的目标。location /api/ 把 /api/ 开头的请求交给本地 8080 端口的后端,前端和后端就共用一个域名、一套跨域规则。

三、负载均衡

后端不止一台时,用 upstream 把机器编成组,Nginx 按策略分发:

upstream backend {
    server 10.0.0.11:8081 weight=2;  # 性能好,多分点
    server 10.0.0.12:8082;
    server 10.0.0.13:8082 backup;    # 前面都挂了才顶上
}

server {
    location /api/ { proxy_pass http://backend; }
}

默认轮询;weight 调权重;backup 当兜底。max_fails 和 fail_timeout 还能自动把老出错的节点摘掉。

image.png

四、动静分离,最划算的优化

图片、JS、CSS 这些静态文件没必要让后端处理,Nginx 直接读磁盘返回,快且省后端资源:

location /static/ {
    root /var/www/demo;
    expires 7d;   # 告诉浏览器缓存一周
}

五、总结一下

  • 改完先 nginx -t 测语法,再 nginx -s reload,别直接 restart 打断连接。
  • 502 多半是后端没起或 proxy_pass 地址写错;404 看 root/location 匹配。
  • 日志在 /var/log/nginx/access.log 和 error.log,出问题先翻它。

其实Nginx 能讲的远不止这些(HTTPS、gzip、限流都可以弄),但代理 + 负载 + 动静分离这个东西,只要配置好的话,已经能撑起大部分中小项目了。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。