我使用auth_request模块(https://play.golang.org/p/k_UlghLxZI)。我的nginx配置:
auth_request /auth;
auth_request_set $backend_status $upstream_status;
location / {
proxy_pass http://unicorn;
error_page 401 @auth;
}
location = /auth {
internal;
proxy_pass https://proxy_pass_url;
proxy_pass_request_body off;
proxy_set_header Content-Length "";
}
location @auth {
if ($backend_status = "401") {
return 302 https://proxy_pass_url/login? origin=$scheme://$http_host$request_uri;
}
}
但我的重定向不起作用。我的配置有什么问题?
答案 0 :(得分:0)
这是什么意思?我假设您没有重定向,但是请求的状态码是什么? / auth子请求的状态码是什么?您在哪个Nginx上进行测试?您检查错误/访问日志了吗?
我问是因为我拿了你的代码,在Nginx 1.19.1上运行,并且运行良好。当/ auth子请求返回401错误时,我正在通过@auth位置进行重定向。我们可以在这里改进的一件事。您无需检查$ backend_status变量是否等于401,如果Nginx将请求传递到@auth位置,则意味着我们从/ auth获得了401:)
Br, 皮奥特