Nginx не загружает css/js/images в https - Заблокирована загрузка смешанного активного контента

Nginx не загружает css/js/images в https - Заблокирована загрузка смешанного активного контента

Я использую 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>

Если вам нужна ссылка с другого хоста.

Связанный контент