Nginx负载均衡https

当通过nginx作为负载平衡器提供https服务时,我遇到了问题。 我有以下configuration:

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被做。

假设你所有的调用都去了server0 ,那么on /application/<something>也是这个问题的一个可能的来源,如果server0服务的网页包含对静态资源的引用,并且通过http而不是https获取。

看看浏览器的开发者工具。 使用Chrome浏览器,在networking标签页中,您可以看到浏览器进行的所有单独调用,以便在从上到下分析HTML时获取更多资源,并且可能会发现通过不安全的http调用发送的内容。

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