
Я использую Ubuntu 14.04 с Nginx 1.8.0. При открытии веб-страниц в https страницы кажутся сломанными, так как css/js/images не загружаются. Я получаю эту ошибку " Blocked loading mixed active content
"
Это мое nginx.conf
:https://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2
Это мой файл виртуального хоста: https://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2
Может ли кто-нибудь подсказать мне, как это исправить?
решение1
Невозможно исправить с помощью конфигурации nginx
Рассмотрим следующий HTML-файл:
<html>
<head>
</head>
<body>
<img src="http://example.com/some/image.png">
</body>
</html>
Если этот html-файл обслуживается по https - он будетвсегдасгенерировать предупреждение о смешанном контенте. Попытка исправить последующий запрос /some/image.png
не сработает, запрос блокируется браузером и не доходит до сервера.
Исправьте HTML
Единственное эффективное решение — исправить исходный HTML-код для основного запроса так, чтобы он https://
также запрашивал все ресурсы, т.е. изменить HTML-код на следующий:
<html>
<head>
</head>
<body>
<img
src="/some/image.png"
alt="same domain and port as this html page please"
/>
</body>
</html>
Или это:
<html>
<head>
</head>
<body>
<img
src="https://example.com/some/image.png"
alt="explicit https"
/>
</body>
</html>
В комментариях вы упомянули WordPress в качестве примера; для установки WordPress единственное, что требуется (в принципе, на практике придется повозиться) — этоизменить URL-адрес сайтатак что WordPress считает https://example.com
это корневым URL для установки.
решение2
Смешанное активное содержимое теперь блокируется по умолчанию в Firefox 23 и выше. Не уверен насчет других браузеров
Что такое смешанный контент?
Когда пользователь посещает страницу, обслуживаемую по HTTP, его соединение открыто для подслушивания и атак типа «человек посередине» (MITM). Когда пользователь посещает страницу, обслуживаемую по HTTPS, его соединение с веб-сервером аутентифицируется и шифруется с помощью SSL и, следовательно, защищено от подслушивания и атак типа «человек посередине».
Однако если страница HTTPS включает в себя HTTP-контент, HTTP-часть может быть прочитана или изменена злоумышленниками, даже если главная страница обслуживается по HTTPS. Когда страница HTTPS имеет HTTP-контент, мы называем этот контент «смешанным». Веб-страница, которую посещает пользователь, зашифрована лишь частично, поскольку часть контента извлекается незашифрованным по HTTP. Блокировщик смешанного контента блокирует определенные HTTP-запросы на HTTPS-страницах.
Похоже, вы ссылаетесь на не-ssl статический контент. Вы должны ссылаться на свой контент как
<a href='//host.com/file.png>
Если вам нужна ссылка с другого хоста.