You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx代理配置遇301重定向异常,请求技术支持

Nginx代理路径转发与301重定向问题解决

可行配置方案

方案一(精准匹配带斜杠路径)

该配置可直接实现/debug/a/b到http://127.0.0.1:32339/a/b的转发,同时解决301重定向问题:

location /debug/ {
    proxy_pass http://127.0.0.1:32339/;
    proxy_set_header Host 127.0.0.1:32339;
    # 可选:传递客户端真实IP给后端服务
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

如果需要兼容直接访问/debug(不带末尾斜杠)的场景,可在server块中添加自动补全斜杠的规则:

server {
    # 其他已有配置...
    rewrite ^/debug$ /debug/ permanent;
}

方案二(兼容无斜杠的通用匹配)

若不想补全斜杠,可直接匹配所有/debug开头的请求,通过rewrite处理路径:

location /debug {
    rewrite ^/debug/(.*)$ /$1 break;
    proxy_pass http://127.0.0.1:32339;
    proxy_set_header Host 127.0.0.1:32339;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

之前配置的问题解析

  1. 初始带尾斜杠配置的301问题:设置proxy_set_header Host $http_host;会把原请求的Host(127.0.0.1:80)传给后端,后端服务可能基于该Host生成重定向地址,最终跳转到http://127.0.0.1:80/a/b。
  2. 去掉尾斜杠的配置问题:proxy_pass不带尾斜杠时,Nginx会将location匹配的/debug完整追加到后端地址后,实际代理路径变为http://127.0.0.1:32339/debug/a/b,不符合路径要求。
  3. rewrite配置的404问题:location /debug/仅匹配带末尾斜杠的路径,而访问/debug/a/b时,Nginx优先匹配前缀/debug,不会触发该location块的rewrite规则,路径未被修改导致后端返回404。

内容的提问来源于stack exchange,提问作者何呵呵

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 13:13:20