Nginx não carrega css/js/images em https – carregamento bloqueado de conteúdo ativo misto

Nginx não carrega css/js/images em https – carregamento bloqueado de conteúdo ativo misto

Estou executando o Ubuntu 14.04 com Nginx 1.8.0. Ao abrir as páginas da web em https, as páginas parecem estar quebradas porque o css/js/images não carrega. Recebo este erro " Blocked loading mixed active content"

Este é meu nginx.conf:https://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2

Este é o meu arquivo host virtual: https://github.com/adithyakhamithkar/ansible/blob/master/roles/nginx/templates/virtualhost_ssl.j2

Alguém poderia me orientar como consertar isso.

Responder1

Não pode ser corrigido com configuração do nginx

Considere o seguinte arquivo html:

  <html>
    <head>
    </head>
    <body>
      <img src="http://example.com/some/image.png">
    </body>
  </html>

Se este arquivo html for veiculado por https - ele serásempregerar um aviso de conteúdo misto. A tentativa de corrigir a solicitação subsequente /some/image.pngnão funcionará, a solicitação é bloqueada pelo navegador e não chega ao servidor.

Corrija o html

A única solução eficaz é corrigir a fonte html da solicitação principal, de modo que ela https://também solicite todos os ativos, ou seja, altere o html para isto:

  <html>
    <head>
    </head>
    <body>
      <img 
        src="/some/image.png" 
        alt="same domain and port as this html page please"
      />
    </body>
  </html>

Ou isto:

  <html>
    <head>
    </head>
    <body>
      <img 
        src="https://example.com/some/image.png" 
        alt="explicit https" 
      />
    </body>
  </html>

Nos comentários você mencionou o wordpress como exemplo; para uma instalação do wordpress, a única coisa necessária (em princípio, na prática, espere alguma bagunça) éalterar o URL do sitepara que o wordpress considere https://example.como URL raiz da instalação.

Responder2

O conteúdo ativo misto agora está bloqueado por padrão no Firefox 23 e superior. Não tenho certeza sobre outros navegadores

O que é conteúdo misto?

Quando um usuário visita uma página servida por HTTP, sua conexão fica aberta para espionagem e ataques man-in-the-middle (MITM). Quando um usuário visita uma página servida por HTTPS, sua conexão com o servidor web é autenticada e criptografada com SSL e, portanto, protegida contra bisbilhoteiros e ataques MITM.

No entanto, se uma página HTTPS incluir conteúdo HTTP, a parte HTTP poderá ser lida ou modificada pelos invasores, mesmo que a página principal seja servida por HTTPS. Quando uma página HTTPS possui conteúdo HTTP, chamamos esse conteúdo de “misto”. A página da web que o usuário está visitando é apenas parcialmente criptografada, pois parte do conteúdo é recuperado sem criptografia por HTTP. O bloqueador de conteúdo misto bloqueia certas solicitações HTTP em páginas HTTPS.

Parece que você está vinculando conteúdo estático não SSL. Você deve vincular seu conteúdo como

<a href='//host.com/file.png>

Se você precisar vincular de outro host.

informação relacionada