所以,我正在尝试使用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;
}
}