一、反向代理是什么
反向代理位于客户端和后端服务之间,对外暴露统一入口,把请求转发到内网的多台服务器。它解决的是统一入口、负载均衡、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% 的需求都能覆盖。




