skå*_*fan 10 authentication nginx jenkins nginx-location
下面是Jenkins的nginx配置文件.其中大部分完全按照我在文档中读到的那样.
配置文件:
upstream app_server {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
listen 80;
listen [::]:80 default ipv6only=on;
server_name sub.mydomain.net;
location ^~ /jenkins/ {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
auth_basic "[....] Please confirm identity...";
auth_basic_user_file /etc/nginx/.htpasswd;
}
Run Code Online (Sandbox Code Playgroud)
}
当导航到http://sub.mydomain.net/jenkins得到提示我为我的基本身份验证服务器说:[...]请确认识别....
这是正确的,但是一旦我输入正确的凭据,我就会再次获得基本身份验证的提醒,但这一次:服务器说:Jenkins.
第二个隐藏的basic_auth来自哪里?!这对我没有任何意义.
击中取消对第一个提示我,然后正确地接收401授权所需的错误.
在第二个基本身份验证中击中CANCEL("服务器说:Jenkins")我得到:
HTTP ERROR 401
Problem accessing /jenkins/. Reason:
Invalid password/token for user: _____
Powered by Jetty://
Run Code Online (Sandbox Code Playgroud)
有谁知道可能会发生什么?
skå*_*fan 31
通过使用basic_auth搜索用作任何其他应用程序的反向代理的Nginx,找到了我的问题的解决方案.
解决方案是这里找到的答案:https: //serverfault.com/questions/511846/basic-auth-for-a-tomcat-app-jira-with-nginx-as-reverse-proxy
我的nginx配置中缺少的行是:
# Don't forward auth to Tomcat
proxy_set_header Authorization "";
Run Code Online (Sandbox Code Playgroud)
默认情况下,似乎在基本身份验证之后Nginx会另外将身份验证标头转发给Jenkins,这就是导致我的问题.Jenkins收到转发的auth标头,然后认为它也需要自己授权?!
如果我们将反向代理设置为不转发任何授权标头,如上所示,那么一切都按预期工作.Nginx将提示basic_auth,在成功验证后,我们在转发到我们的反向代理时明确清除(重置?)auth头.
| 归档时间: |
|
| 查看次数: |
4788 次 |
| 最近记录: |