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

NGINX跳转时URI自动拼接域名导致404 Not Found错误如何解决

问题产生原因
  • 上游服务跳转逻辑错误:上游生成返回跳转地址时,错误将域名domain1.com直接拼接到了URI路径前,而非作为域名部分使用,浏览器接收到该相对路径跳转地址后,会和当前域名拼接,最终生成https://domain1.com/domain1.com/test的错误访问地址
  • 已配置的重写规则未生效,通常是以下几类原因:
    • 规则语法错误,例如正则转义符缺失、标记位使用不当
    • 未按照Nginx location匹配优先级配置规则,导致错误地址没有命中你写的匹配规则
    • 修改配置后未执行nginx -s reload重载配置,或重载前未通过nginx -t检查配置合法性,规则未实际生效
修复方案

方案1:优先修改上游服务(推荐)

直接调整上游服务的跳转生成逻辑,生成跳转地址时不要将域名拼入URI路径,直接输出/test这类正确的相对路径,或者输出完整的带域名的绝对跳转地址,从根源避免错误。

方案2:通过Nginx重写规则修复(无法修改上游时使用)

直接在Nginx对应server块下添加如下规则即可:

# 方案2.1:内部重写,用户地址栏不变,直接转发到正确路径
rewrite ^/domain1\.com/(.*)$ /$1 break;

# 方案2.2:返回301跳转修正浏览器地址,后续访问直接使用正确地址,适合长期修复
# rewrite ^/domain1\.com/(.*)$ /$1 permanent;

配置完成后执行nginx -t检查语法,确认无报错后执行nginx -s reload重载配置即可生效。

旧规则不生效的排查补充

如果你之前已经写了类似规则未生效,可按以下顺序排查:

  1. 确认正则中.已添加转义符\,否则会被识别为通配符而非普通点号
  2. 确认规则写在server块下,或者写在能命中错误路径的location块中
  3. 若你用location匹配错误路径,确保规则优先级正确:精准匹配 > 长前缀匹配 > 正则匹配 > 短前缀匹配,不要让根路径的location /覆盖了错误路径的匹配规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:09:02