Nginx 负载均衡 https

Nginx 负载均衡 https

我在通过 nginx 作为负载均衡器提供 https 服务时遇到了问题。我有以下配置:

server {
    listen       443 ssl;
    listen       [::]:443 ssl;
    server_name  sub.domain.com;

    root /usr/share/nginx/html;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;


    ssl_certificate         /etc/ssl/[cert].crt;
    ssl_certificate_key     /etc/ssl/private/wildcard.[cert].com.key;
    ssl_protocols           TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers '[...]'

    ssl_prefer_server_ciphers on;
    ssl_dhparam /etc/pki/tls/certs/dhparams.pem;


    location /application { proxy_pass http://server0; }

    location / {
            return 301 http://www.domain.com;
    }

}

我在“server0”上的 tomcat 上运行一个网站。有时(并非总是如此)我会在浏览器中收到混合内容错误,因为请求是通过 http 而不是 https 发送的。我无法以简洁的方式重现这些错误,因为它有时有效,有时根本不起作用。

关于如何进行诊断有什么线索吗?

编辑:没有对 http 进行编码调用。

答案1

假设您所有的调用都将转到server0,那么/application/<something>此问题的一个可能来源是,如果由 提供的网页server0包含对静态资源的引用,并且是通过http而不是 来获取的https

使用浏览器的开发者工具查看。使用 Chrome,在网络选项卡上,您可以看到浏览器在从上到下解析 HTML 时为获取其他资源而进行的所有单独调用,并且您也许可以发现哪些内容是通过不安全的调用传入的http

这不是负载均衡器的错误,而是 Web 应用程序实现的错误。

相关内容