使用NGINX在前端和后端分别进行基本验证

时间:2016-10-13 15:43:43

标签: authentication nginx proxy http-headers

所以,我正在尝试使用SSL从客户端到代理设置NGINX反向代理,从代理到实际服务器的通信是http。

更复杂的是,我需要使用NGINX上的Basic Auth功能来验证访问该站点的用户,然后才能授予对后端服务器的访问权限。此外,后端服务器本身需要登录,这些值被硬编码到该VHost的配置文件中。

问题是当两者都启用后我无法实际访问服务器,我被要求重复登录,并且永远无法访问该页面。

如果我禁用后端的auth要求,请在前端启用它,一切正常,我可以登录并访问正确的页面。如果我禁用前端身份验证并启用后端身份验证,则会正确传递并且一切正常。

所以,我猜这与前端的授权信息有某种关系,以某种方式通过代理使其通过后端进入后端,并且它不能像那些那样工作凭证无效。

我尝试在使用more_clear_headers在VHosts位置设置中重置它们之前清除auth标头,但是虽然这似乎允许初始请求通过,但是加载页面的其余部分再次点击auth块并且我被问到登录。

这是我当前的主机配置 (用#替换了具体的细节),任何人都可以建议我在哪里出错吗?

由于

server {

    # SSL configuration
    #
    listen 443;
    listen [::]:443;
    ssl on;
    ssl_certificate /etc/letsencrypt/live/#.pem;
    ssl_certificate_key /etc/letsencrypt/live/#.pem;
    access_log /var/log/nginx/#_access.log upstreamlog;
    server_name #.#.co.uk;
    auth_basic "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    location / {
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-Proto https;
            more_clear_headers Authorization;
            proxy_set_header Authorization "Basic #####2V0Om5#####=";
            proxy_redirect off;
            proxy_pass http://10.0.1.201:9981;
    }
}

0 个答案:

没有答案