У меня возникают проблемы при обслуживании https через nginx в качестве балансировщика нагрузки. У меня такой конфиг:
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;
}
}
И я обслуживаю сайт, работающий на tomcat на "server0". Иногда, не всегда, я получаю ошибки смешанного содержимого в браузере, когда запросы отправлялись по http вместо https. У меня проблемы с кратким воспроизведением ошибок, поскольку иногда это работает, а иногда - нет.
Есть какие-нибудь подсказки о том, как действовать при диагностике этого?
Изменить: кодированные вызовы http не выполняются.
Предполагая, что все ваши звонки будут server0
, так что /application/<something>
тогда одним из возможных источников этой проблемы является то, что веб-страницы, обслуживаемые server0
содержат ссылки на статические ресурсы и извлекаются через http
и нет https
.
Посмотрите с помощью инструментов разработчика браузера. В Chrome на вкладке сети вы можете увидеть все отдельные вызовы, сделанные браузером для получения дополнительных ресурсов, когда он анализирует HTML сверху вниз, и вы, возможно, сможете определить, какой контент оказался небезопасным. http
звонки.
Это вина не балансировщика нагрузки, а реализации веб-приложения.