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

配置Tomcat+NGINX auth_request遇301错误,求排查建议

排查NGINX auth_request + Tomcat认证导致的301跳转/无法连接问题

我仔细看了你的问题描述和提供的nginx.conf配置,发现两个核心配置问题,这应该就是导致你遇到301跳转和无法访问/test路径的原因:

1. Auth子请求的代理路径不匹配Tomcat的认证端点

你的location = /auth/配置里,proxy_pass http://0.0.0.0:8080;会把NGINX的/auth/子请求转发到Tomcat的**/auth/路径(注意结尾的斜杠),但你提到手动访问/auth**(无斜杠)才能拿到200响应。大多数Java Web应用(包括Tomcat)对路径的结尾斜杠很敏感,访问/auth/大概率会触发Tomcat返回301重定向到/auth。

而NGINX的auth_request默认不会跟随后端的重定向,直接把301状态码当成认证失败,这就会导致NGINX拒绝用户访问,或者后续跳转逻辑彻底混乱。

修复方案:
调整auth的location配置,确保转发到Tomcat的/auth端点(无斜杠):

location = /auth {
    internal;
    proxy_pass http://0.0.0.0:8080/auth;
    proxy_pass_request_body off;
    proxy_set_header Content-Length "";
    proxy_set_header X-Original-URI $request_uri;
}

同时更新/test location里的auth_request指令为不带斜杠的版本:

location /test {
    root /data/www;
    autoindex on;
    auth_request /auth;
    auth_request_set $auth_status $upstream_status;
}

2. /test路径的自动跳转导致认证上下文丢失

当用户访问http://你的服务器地址/test(不带结尾斜杠)时,因为你开了autoindex on,NGINX默认会返回301重定向到http://你的服务器地址/test/(带斜杠)。但这个重定向过程中,如果Tomcat的认证是基于会话Cookie的,浏览器可能不会在重定向请求里正确携带Cookie,或者NGINX在重定向后没重新执行auth_request验证,直接导致访问被拒。

修复方案:
有两种方式解决这个问题:

  • 方式一:强制用户访问带斜杠的路径,或者在NGINX里加个显式的重定向规则,自动把/test重定向到/test/,确保重定向后能携带认证信息:
location = /test {
    return 302 $scheme://$host/test/;
}

location /test/ {
    root /data/www;
    autoindex on;
    auth_request /auth;
    auth_request_set $auth_status $upstream_status;
}
  • 方式二:关闭NGINX的自动目录跳转(不太推荐,不符合用户访问习惯),不过更稳妥的还是用方式一的显式重定向。

额外排查小技巧

如果以上修复后还是有问题,可以试试这些方法进一步定位:

  • 去看Tomcat的访问日志,确认NGINX的子请求是不是真的到了正确的/auth端点,以及返回的状态码到底是什么。
  • 临时开启NGINX的debug日志(把error_log /var/log/nginx/error.log;改成error_log /var/log/nginx/error.log debug;),看看auth_request子请求的详细处理流程,能帮你搞清楚子请求有没有成功、有没有拿到预期的状态码。
  • 直接访问http://你的服务器地址/test/(带斜杠),看看能不能正常显示目录列表,先排除跳转带来的问题。

验证修复效果

改完配置后,按下面的步骤验证:

  1. 重新加载NGINX配置:sudo nginx -s reload
  2. 访问http://你的服务器地址/test,确认会自动跳转到/test/,而且认证后能正常显示目录结构。
  3. 查看NGINX的access.log,确认请求状态码是200,不是301或者4xx之类的错误码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 10:17:42