首页 > 解决方案 > NGinx 发送 307 而不是 401

问题描述

随着时间的推移,我使用了几个反向代理,但 NGinx 的行为让我大吃一惊。在使用 HAProxy(作为 K8s Ingress)多年后,我最近不得不使用 NGinx,但我一直没有看到任何解决方案。

从一开始,会话丢失时的行为就不同了。HTTP 401 会告诉客户端(单页 JavaScript 应用程序)通知用户会话丢失并且他/她必须重新登录。它没有将 401 发送到浏览器,而是将 307 发送到登录页面,并带有错误的动词 (POST),因为 401 失败的请求是 POST 请求。

排除故障的最佳方法是隔离,因此我从存储库(Linux Mint 20)安装了版本,并在 /etc/nginx/conf.d 中注册了一个简单的反向代理条目

server {
  listen       80;
  location / {
     proxy_pass      http://localhost:8080;
  }
}

不幸的是(或幸运的是)这个问题马上就显现出来了:一旦我删除了 cookie 并且服务器发送 401“请登录”,浏览器就会在请求中显示 307,该请求以 401 失败。

预期行为:

当前行为:

知道如何禁用此行为吗?

标签: nginx

解决方案


推荐阅读