나는 ISP가 제공한 DNS 이름을 통해 여러 웹사이트를 호스팅하고 haproxy 설치를 사용하여 라우터의 포트 80 이상으로 웹사이트를 분할했습니다. 그 중 하나를 https로 변경할 때까지 내 고유한 웹 사이트(11개인 것 같습니다)에 매우 잘 작동했습니다.
이제 Google 크롬에서는 내 모든 웹사이트가 https라고 가정하고 https인 웹사이트에만 액세스할 수 있습니다. :-(
Chrome에서 이 작업을 수행하는 이유는 모든 웹사이트가 내 도메인 이름(myexampledomain.com)으로 시작하기 때문이라고 생각합니다. 예제 사이트 1은http://myexampledomain.com/website-one/main.html예제 사이트 2는 다음과 같습니다.https://myexampledomain.com/website-two/main.html어떤 이유로 Chrome이 https 링크에 성공적으로 액세스한 후 https가 아닌 링크는 자동으로 https로 액세스됩니다. http로 만들기 위해 s를 삭제하면 크롬이 다시 거기에 추가합니다.
Internet Explorer 9을 통해 내 웹 사이트에 액세스하면 모두 제대로 작동하거나 최소한 https로 자동 완성되는 연결 없이도 액세스할 수 있습니다. 아니요, 내 백엔드 어딘가에 http-to-https 리디렉션이 없습니다. 이것은 단지 크롬이 어리석은 것입니다. Chrome이 어리석은 이유와 Chrome에서 다른 사이트에 계속 액세스할 수 있는 방법이 있는지 아는 사람이 있나요? 나는 IE를 싫어하고 그것을 사용하면 신체적 고통을 겪습니다 ;-)
답변1
(우리의 토론을 적절한 답변으로 작성하기 위해 :)
Google Chrome(다른 모든 최신 브라우저와 함께)은 다음을 지원합니다.엄격한 운송 보안HTTP 헤더는 "이 사이트는 HTTPS를 통해서만 접속할 수 있으므로 앞으로는 사용자가 HTTP를 요청하더라도 대신 HTTPS를 제공하세요"라고 브라우저에 알리는 것입니다. HTTPS 사용이 점점 더 일반화됨에 따라 일반적으로 HTTPS가 설정된 경우(Strict-Transport-Security 헤더가 영향을 미치기 위해 필요함) 이 헤더를 보내는 것이 새로운 소프트웨어 및 프레임워크에서 기본값이 됩니다. , 모든 것에 사용하는 것이 바람직합니다. 발견한 바와 같이, 사용 중인 소프트웨어는 기본적으로 이러한 방식으로 작동하도록 구성되어 있습니다. Internet Explorer 9에서는 웹의 이 기능을 지원하기에는 너무 오래되었기 때문에 이러한 동작을 볼 수 없습니다.
두 가지 해결책은 (1) 모든 사용자가 HTTPS를 통해 이동하도록 강제하고 싶지 않기 때문에 헤더를 보내지 않도록 소프트웨어 구성을 변경하거나 (2) HTTPS를 통해 제대로 작동하도록 모든 사이트를 변경하는 것입니다. . 일반적으로 두 번째 옵션을 권장합니다. 일단 서버를 구성하고 작동하는 HTTPS 인증서를 사용하면 요즘 인터넷에서 암호화되지 않은 연결을 사용할 필요가 없기 때문입니다.
답변2
Peter Cooper Jr.의 논평 응답에 따르면 내 마음의 고통은 gitlab omnibus와 함께 번들로 제공되는 NGINX 설치로 인해 발생합니다. 이는 연결 클라이언트에게 통신할 때 항상 https만 사용해야 한다고 효과적으로 알려주며, Gitlab/NGINX의 경우 보안 통신 기간은 24개월로 설정되어 있습니다!
STS 헤더에 대한 정보:http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security
Gitlab 설치 정보:https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/doc/settings/nginx.md