配置 proxy_pass 必须置于 location 块内,尾部斜杠影响路径重写,需设置 Host、X-Real-IP、X-Forwarded-For 请求头,并按 WebSocket、API 或静态资源等场景补充对应参数。

配置 proxy_pass 的核心在于明确代理目标、正确设置请求头,并匹配 location 路径规则。它不是单独一行就能生效的,必须放在 location 块中,配合关键的 HTTP 协议升级与头信息传递。
location 匹配路径决定 proxy_pass 行为
proxy_pass 的值是否带尾部斜杠(/),会直接影响后端 URL 的拼接逻辑:
- 如果
location /api/ { proxy_pass http://backend; }—— Nginx 会把/api/替换为/,请求https://domain/api/user将转发为http://backend/user - 如果
location /api/ { proxy_pass http://backend/; }—— 同样去掉/api/,效果一致;但若写成proxy_pass http://backend/sub/;,则会将/api/user改写为/sub/user - 如果
location /api { proxy_pass http://backend;(无尾斜杠)—— 则整个/api路径原样保留,转发为http://backend/api,容易引发 404
必须设置的请求头字段
仅写 proxy_pass 不足以让后端正确识别原始请求。以下三行是反向代理的基础标配:
-
proxy_set_header Host $host;:传递原始域名,避免后端日志或重定向出错 -
proxy_set_header X-Real-IP $remote_addr;:暴露真实客户端 IP -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;:兼容多层代理场景
常见服务类型需额外配置
不同后端协议对头部和超时要求不同:
阿里百炼大模型平台多人共享账号用量统计代理服务。解决公司共用账号时无法区分个人用量的问题。适用场景:1)部署用量统计代理;2)统计多人Token用量和调用次数;3)管理大模型API调用配额。
-
WebSocket:必须加
proxy_http_version 1.1;、proxy_set_header Upgrade $http_upgrade;和proxy_set_header Connection "upgrade"; -
长连接 API:建议设
proxy_read_timeout 300;、proxy_send_timeout 300;,防止默认 60 秒中断 -
静态资源代理:可启用缓存,如
proxy_cache my_cache;,但需提前在http块定义缓存区
配置位置与文件层级
proxy_pass 只能出现在 location 块内,不能直接写在 server 或 http 级。典型结构如下:
/etc/nginx/nginx.conf 或 /etc/nginx/conf.d/app.conf
upstream backend {
server 127.0.0.1:8000;
}
server {
listen 80;
server_name example.com;
location /api/ {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}










