Nginx 反向代理到服务器的登录无法按预期工作

Nginx 反向代理到服务器的登录无法按预期工作

我在 nginx 反向代理后面有两台服务器。我被正确转发到网站,但其中一个网站在允许您进入之前需要登录(类似于 sharepoint),反向代理似乎正在破坏登录。

我之前问过一个环境非常相似的问题这里

我被重定向到登录页面,但我无法登录。但是,如果我从方程式中删除反向代理,那么我就可以正常登录。

登录的服务器名称是服务器2.mydomain.com

/etc/nginx/站点可用/默认

server {
    listen 80 default;
    server_name _;
    return 301 https://$host$request_uri;
}

server {

    listen 443 ssl default_server;
    server_name server1.mydomain.com;

    ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;

    location / {
            proxy_pass http://192.168.0.15:80;
            proxy_set_header Host $host;

            proxy_redirect http:// $scheme://;

    }
}

server {
    listen 443 ssl;
    server_name server2.mydomain.com;

    ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;

    location / {
            proxy_pass http://192.168.0.20:80;
            proxy_set_header Host $host;

            proxy_redirect http:// $scheme://;

    }
}

当我去服务器1.mydomain.com基本上是一个静态网站,一切似乎都正常。但是,当我去服务器2.mydomain.com我收到了弹出窗口登录,但无法成功登录服务。

预期的行为是,我能够登录并使用该站点,就好像没有反向代理一样。

这是我尝试登录时来自反向代理的访问日志服务器2.mydomain.com

/var/log/nginx/access.log

192.168.0.5 - - [26/Jan/2016:02:23:52 -0600] "GET /test HTTP/1.1" 401 341 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"
192.168.0.5 - - [26/Jan/2016:02:23:52 -0600] "GET /test HTTP/1.1" 401 1293 "-" "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko"

/测试是登录所在的网站部分,所以我试图访问server2.mydomain.com/test

有什么事情会明显阻止我登录吗?还有其他日志文件我可以检查吗?提前致谢


编辑1

我尝试了几种方法,但都不起作用。

我的原始配置文件让我登录,但它总是返回拒绝访问的页面。

这个配置文件:

/etc/nginx/站点可用/默认

server {
    listen 443 ssl;
    server_name server2.mydomain.com;

    ssl_certificate /usr/local/nginx/conf/mydomain.com.crt;
    ssl_certificate_key /usr/local/nginx/conf/mydomain.com.key;
    ssl_session_cache shared:SSL:10m;

    ssl_session_timeout 5m;

    ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
    ssl_prefer_server_ciphers on;

    location / {
            proxy_pass http://192.168.0.20:80;
    }
}

使用 proxy_set_header 行和 proxy_redirect 只会将我带到直接 403 禁止访问页面,但正在重定向。

如果我proxy_set_header重新添加该行,我会再次登录,但任何登录仍然会失败。我还尝试将 proxy_set_header 更改为proxy_set_header X-Forwarded-Proto $scheme,但这又完全破坏了它。有什么想法吗?

答案1

您的代理重定向看起来可疑。请查看文档,以及nginx 初学者指南

基本上,尝试从您的位置删除除 proxy_pass 之外的所有内容。这主要是猜测,但值得一试。

答案2

不久前我遇到过类似的问题,我通过修复启动该进程的组的文件夹访问权限解决了这个问题。

NGINX 配置为使用哪个用户?该用户是否有权访问这些 SSL 文件夹位置?

參考文獻:如何更改 NGINX 用户?

相关内容