实现http反向代理只需三步:1.在location中正确配置proxy_pass,注意结尾斜杠决定路径传递方式;2.设置host、x-real-ip、x-forwarded-for请求头以保障后端正确识别;3.添加超时、http版本及connection控制提升健壮性。

配置 ngx_http_proxy_module 实现基础 HTTP 反向代理,核心是正确使用 proxy_pass 并配合关键请求头控制。不需要复杂模块或缓存,只要三步就能跑通。
1. 最简 proxy_pass 配置
在 location 块中指定后端地址,注意 URI 结尾斜杠是否带 `/`,它决定路径如何传递:
- 不带 `/`(如
proxy_pass http://192.168.1.100:8080;):客户端请求的完整 URI 路径会被追加到后端地址后
例如访问/api/user→ 后端收到http://192.168.1.100:8080/api/user - 带 `/`(如
proxy_pass http://192.168.1.100:8080/;):location 匹配的部分被替换为 `/` 后的内容
例如location /app { proxy_pass http://192.168.1.100:8080/; },访问/app/data→ 后端收到http://192.168.1.100:8080/data - 若 location 使用正则(如
location ~ \.png$),proxy_pass后不能带任何 URI,只能是协议+主机+端口,末尾不能有 `/`
2. 必须设置的请求头
后端服务常依赖 Host 和真实客户端 IP,否则可能返回 404 或日志记录错误:
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
-
proxy_set_header Host $host;—— 把原始请求的 Host 头传过去,避免后端因 Host 不匹配拒绝服务 -
proxy_set_header X-Real-IP $remote_addr;—— 让后端拿到真实用户 IP -
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;—— 兼容多层代理场景,自动拼接 IP 链
3. 补充基础健壮性配置
防止连接卡死或响应异常,建议加上超时和协议版本控制:
-
proxy_connect_timeout 5s;—— 连接后端超时设为 5 秒,避免挂起 -
proxy_send_timeout 30s;和proxy_read_timeout 30s;—— 发送和读取响应各不超过 30 秒 -
proxy_http_version 1.1;—— 显式启用 HTTP/1.1,支持 keepalive,减少连接开销 -
proxy_set_header Connection '';—— 清空 Connection 头,避免干扰后端长连接判断
4. 完整示例(代理到本地 8080 服务)
server {
listen 80;
server_name 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_http_version 1.1;
proxy_connect_timeout 5;
proxy_send_timeout 30;
proxy_read_timeout 30;
}
}










