Nginx反向代理需明确路径匹配、后端协议、请求头保留及客户端IP传递;必须补全proxy_http_version 1.1、proxy_redirect off、client_max_body_size三项,否则易致413、内网地址泄露或长连接失效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要在Nginx中配置反向代理,把用户请求转发到后端服务(比如 localhost:3000 或内网 IP:8080),但又不确定哪些参数必须写、哪些可以省略、location 路径怎么匹配才不丢请求头或导致 404——通义灵码本身不生成 Nginx 配置,但你可以用它辅助写出安全、可用的反向代理配置,关键在于你给它的提示词是否精准、是否包含真实约束条件。
明确后端服务信息并构造基础提示词
打开通义灵码插件,在编辑器中新建一个空白 .conf 文件,光标定位后输入:「请生成 Nginx 反向代理配置,将 /api/ 开头的请求转发到 http://127.0.0.1:8000,要求保留原始 Host 头、传递真实客户端 IP、启用 HTTP/1.1 长连接」。
这句提示词已包含路径前缀、目标地址、三个关键行为要求,比“写个反向代理”更易命中正确输出。通义灵码会据此生成含 proxy_pass、proxy_set_header 的块,而不是只返回一行 location {}。
如果后端是 HTTPS 服务,必须在提示词中写明「后端地址为 https://192.168.2.10:8443」,否则它默认生成 http:// 协议,且不会主动加 proxy_ssl_* 系列指令。
生成后立即校验三处硬性缺失
通义灵码输出的配置通常缺这三项:缺少 client_max_body_size 设置,大文件上传会直接 413;缺少 proxy_redirect off,重定向响应头可能把内网地址暴露给前端;缺少 proxy_http_version 1.1,HTTP/1.0 下 keepalive 不生效。
逐行检查生成结果,手动补上:
proxy_http_version 1.1;
proxy_set_header Connection '';
client_max_body_size 100m;
proxy_redirect off;
【proxy_redirect off 必须加,否则后端返回 302 重定向时,Location 响应头里的内网地址会原样发给浏览器,导致访问失败】
适配不同路径匹配场景
方法一:精确匹配单个路径
适用于只代理 /health 检查接口:location = /health { proxy_pass http://127.0.0.1:9000/health; }
方法二:前缀匹配并去除路径前缀
这是最常用方式:location /api/ { proxy_pass http://127.0.0.1:8000/; } —— 注意 proxy_pass 末尾有 /,否则 /api/user 会被错误转发成 http://…/api/user。
方法三:正则匹配带变量提取
当需要把 /v1/users/123 → 后端 /users?id=123 时,用 rewrite 提前改写:location ~ ^/v1/(.+)$ { rewrite ^/v1/(.+)$ /$1 break; proxy_pass http://127.0.0.1:8000; }
添加健康检查与超时控制
第一步:在 upstream 块中定义后端组,并启用被动健康检查:
upstream backend_api {
server 127.0.0.1:8000 max_fails=3 fail_timeout=30s;
server 127.0.0.1:8001 backup;
}
第二步:在 location 中引用该 upstream:
location /api/ {
proxy_pass http://backend_api;
…其他 proxy_* 指令
}
第三步:设置超时避免请求卡死:
proxy_connect_timeout 5s;
proxy_send_timeout 30s;
proxy_read_timeout 30s;
这三项值不能全设成 60s,否则长连接下用户上传中断时,Nginx 会等满 60 秒才断开,浪费 worker 连接数。



















