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

使用Nginx反向代理时Node Express收到的URL出现双前导斜杠如何解决

双斜杠问题产生原因

该问题由Nginx的proxy_pass路径替换逻辑直接导致:
当location /test匹配到请求URI时,你配置的proxy_pass http://localhost:3030/;末尾携带了斜杠,属于带URI的代理配置,Nginx会将请求URI中匹配到的/test前缀替换为proxy_pass指定的/。
你访问http://server/test/banana时,请求URI里/test后的剩余部分是/banana,替换拼接后最终传给上游Node服务的路径就是/ + /banana = //banana。
merge_slashes指令仅作用于Nginx接收的原始用户请求的斜杠合并,不会处理proxy_pass拼接生成的路径,因此修改该配置无效。

解决方案

你可以根据业务需求二选一:

  • 方案1:移除proxy_pass末尾的斜杠,适配路径前缀透传
    修改Nginx配置如下:

    location /test {
        proxy_pass http://localhost:3030;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
    }
    

    该配置下,访问http://server/test/banana时,上游Node服务接收到的路径为/test/banana,你需要同步调整Express路由,添加/test前缀即可。

  • 方案2:调整location匹配规则,保留原有Express路由
    修改Nginx配置如下:

    # 兼容不带末尾斜杠的/test访问
    rewrite ^/test$ /test/ permanent;
    
    location /test/ {
        proxy_pass http://localhost:3030/;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
    }
    

    该配置下,访问http://server/test/banana时,Nginx会将匹配到的/test/前缀替换为/,上游接收到的路径就是/banana,无需修改现有Node代码即可正常匹配路由。

内容的提问来源于stack exchange,提问作者Brian Mac

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 22:24:03