Nginx가 https에서 CSS/js/이미지를 로드하지 않음 - 혼합 활성 콘텐츠 로드가 차단됨

Nginx가 https에서 CSS/js/이미지를 로드하지 않음 - 혼합 활성 콘텐츠 로드가 차단됨

Nginx 1.8.0과 함께 우분투 14.04를 실행하고 있습니다. https에서 웹 페이지를 여는 동안 CSS/js/이미지가 로드되지 않아 페이지가 손상된 것처럼 보입니다. ' ' 오류가 발생합니다 Blocked loading mixed active content.

이것은 나의 nginx.conf:https://github.com/adithyakamithkar/ansible/blob/master/roles/nginx/templates/nginx.j2

이것은 내 가상 호스트 파일입니다. https://github.com/adithyakamithkar/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로 암호화되므로 도청 및 MITM 공격으로부터 보호됩니다.

그러나 HTTPS 페이지에 HTTP 콘텐츠가 포함되어 있으면 기본 페이지가 HTTPS를 통해 제공되더라도 공격자가 HTTP 부분을 읽거나 수정할 수 있습니다. HTTPS 페이지에 HTTP 콘텐츠가 있는 경우 해당 콘텐츠를 '혼합'이라고 합니다. 사용자가 방문하는 웹페이지는 부분적으로만 암호화됩니다. 일부 콘텐츠는 HTTP를 통해 암호화되지 않은 상태로 검색되기 때문입니다. 혼합 콘텐츠 차단기는 HTTPS 페이지에서 특정 HTTP 요청을 차단합니다.

SSL이 아닌 정적 콘텐츠를 연결하는 것 같습니다. 다음과 같이 콘텐츠를 연결해야 합니다.

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

다른 호스트에서 연결해야 하는 경우.

관련 정보