科技 > 操作系统 > Windows

Nginx多层代理下的“404”与“重定向死循环”深度排查与避坑指南

2人参与 2026-05-13 Windows

在复杂的微服务或企业级应用部署中,我们经常使用多层 nginx 架构:外层 nginx(如宝塔面板)负责 https 卸载和全局入口,内层 nginx(如 docker 容器)负责业务逻辑分发。

最近在部署 maxkey 认证系统(基于 angular 开发)时,遇到了一个极其隐蔽的坑:后端 curl 正常,但域名访问静态资源报 404,且页面陷入重定向死循环。 本文将复盘排查过程并提供标准配置方案。

一、 问题现象

  1. 静态资源 404:浏览器访问 [https://domain.com/maxkey/assets/js.js](https://domain.com/maxkey/assets/js.js) 报错 404,但直接在服务器 curl 内网 ip 资源却是通的。
  2. 重定向次数过多:页面无法打开,提示 err_too_many_redirects
  3. docker 缓存困惑:修改前端代码并重新打包镜像,发现页面内容始终不更新。

二、 核心原因分析

1. 优先级陷阱:正则匹配“劫持”了转发

这是宝塔等集成环境最常见的坑。宝塔默认会在站点配置中添加如下代码:

location ~ .*\.(js|css)?$ {
    expires      12h;
    # ...
}

nginx 匹配规则是: 正则匹配(~)的优先级高于普通前缀匹配(location /maxkey/)。

当请求 .js 文件时,nginx 会进入宝塔默认的正则块,试图在本地目录下找文件。由于文件实际在 9 号机的容器里,本地自然返回 404,转发逻辑根本没触发。

2. 路径消失之谜:斜杠的艺术

proxy_pass 中,结尾是否有斜杠 / 决定了路径是“替换”还是“透传”:

3. 协议丢失导致的重定向死循环

外层走 https (443),内层走 http (80)。如果外层没有告诉内层“用户实际用的是 https”,内层 nginx 可能会尝试发送 301 重定向让用户跳转到 http,而外层又强制 https,从而导致无限循环。

三、 解决方案:标准转发模板

为了彻底解决上述问题,建议在外部网关(如宝塔)中使用 ^~(最佳前缀匹配)。它能强制跳过正则匹配,确保转发逻辑生效。

1. 外部网关(宝塔/站点)配置

# 使用 ^~ 确保优先级高于宝塔默认的 .js/.css 正则块
location ^~ /maxkey/ {
    # 显式指向内网业务服务器 ip 与端口
    proxy_pass http://10.130.135.9:8527/maxkey/; 
    # 关键头部透传
    proxy_set_header host $host;
    proxy_set_header x-real-ip $remote_addr;
    proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for;
    # 核心:告诉后端当前协议是 https,防止重定向循环
    proxy_set_header x-forwarded-proto $scheme;
    # 禁用可能导致冲突的自动重定向修改
    proxy_redirect off;
}

2. docker 打包与缓存清理

如果您发现代码不更新,通常是 docker 认为 dist 目录没有变化。请在构建时禁用缓存:

# 强制重新拷贝 dist 目录
docker build --no-cache -t maxkey-frontend:latest .
# 启动时强制重新创建容器
docker-compose up -d --force-recreate maxkey-frontend

四、 排查工具箱

五、 总结

在处理多层代理时,优先级路径透明度协议识别是三大核心。使用 ^~ 锁定路径优先级,配合 x-forwarded-proto 维持协议状态,可以解决 90% 以上的转发异常。

以上就是nginx多层代理下的“404”与“重定向死循环”深度排查与避坑指南的详细内容,更多关于nginx 404与重定向死循环的资料请关注代码网其它相关文章!

(0)

您想发表意见!!点此发布评论

推荐阅读

nginx配置前端请求转发到指定的后端ip方式

05-13

Ubuntu中复制粘贴快捷键方式

05-13

点击时CPU瞬时超频! Win11不再卡了

05-13

Windows版Nginx常用命令使用及说明

05-13

Win10 五月扩展安全更新KB5087544推送:解决远程桌面警告异常

05-13

增强辅助功能和系统交互! Win11 26H1 五月累积更新发布

05-13

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论