Nginx 反向代理配置详解(附 5 种常见场景)

一、反向代理是什么

反向代理位于客户端和后端服务之间,对外暴露统一入口,把请求转发到内网的多台服务器。它解决的是统一入口、负载均衡、HTTPS 终结、隐藏后端等问题。

二、最常用配置:代理到后端服务

server {
    listen 80;
    server_name api.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;
    }
}

三、五种常见场景

1. 多服务按路径分流

location /api/   { proxy_pass http://127.0.0.1:8080; }
location /admin/ { proxy_pass http://127.0.0.1:9000; }

2. 负载均衡

upstream backend {
    server 10.0.0.1:8080 weight=3;
    server 10.0.0.2:8080 weight=1;
}
location / { proxy_pass http://backend; }

3. HTTPS 终结 + HTTP 转发

Nginx 做 SSL 终止,后端只跑 HTTP,降低后端加解密开销。

4. WebSocket 支持

location /ws/ {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

5. 静态资源 + 动态分离

location /static/ { root /var/www; expires 30d; }
location / { proxy_pass http://127.0.0.1:8080; }

四、实战:给微信 API 做代理

把请求统一从固定服务器 IP 出网,避免家庭宽带 IP 变动导致白名单失效:

location /wxproxy/ {
    proxy_pass https://api.weixin.qq.com;
    proxy_set_header Host api.weixin.qq.com;
    proxy_ssl_server_name on;
}

五、排错清单

  • 502:后端没起或端口错,先 curl 后端地址验证。
  • 413:client_max_body_size 20m; 调大。
  • 超时:加 proxy_read_timeout 60s;

结语

反向代理是运维基本功,配熟这五种场景,日常 90% 的需求都能覆盖。

上一篇 本地部署大模型 LLM 完全指南:从硬件选型到 vLLM 实战
下一篇 AI 辅助编程实战:Copilot vs Cursor vs Codeium 深度对比