If Google Was A Guy (Full Series)
차례:
이 안내서에서는 Nginx에서 HTTP 트래픽을 HTTPS로 리디렉션하는 방법에 대해 설명합니다.
Nginx 발음 "engine x"는 인터넷에서 가장 큰 일부 사이트의로드를 처리하는 무료 오픈 소스 고성능 HTTP 및 리버스 프록시 서버입니다.
요청 및 응답이 일반 텍스트로 전송 및 리턴되는 HTTP와 달리 HTTPS는 TLS / SSL을 사용하여 클라이언트와 서버 간의 통신을 암호화합니다.
HTTP를 통한 HTTPS 사용의 이점은 다음과 같습니다.
- 모든 데이터는 양방향으로 암호화됩니다. 결과적으로 가로 채면 민감한 정보를 읽을 수 없습니다.Chrome 및 기타 모든 인기있는 브라우저는 웹 사이트를 안전하다고 표시합니다.HTTPS를 사용하면 HTTP / 2 프로토콜을 사용하여 사이트 성능을 크게 향상시킬 수 있습니다.Google은 HTTPS 웹 사이트를 선호합니다. HTTPS를 통해 서비스를 제공하면 사이트 순위가 높아집니다.
Nginx에서 HTTP를 HTTPS로 리디렉션하는 기본 방법은 각 사이트 버전에 대해 별도의 서버 블록을 구성하는 것입니다. 서버의 예기치 않은 동작을 유발할 수 있으므로 if 지시문을 사용하여 트래픽을 리디렉션하지 않아야합니다.
사이트 당 HTTP를 HTTPS로 리디렉션
단일 웹 사이트를 HTTPS로 리디렉션하려면 도메인 구성 파일을 열고 다음을 변경하십시오.
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; }
코드를 한 줄씩 나누어 봅시다:
-
listen 80
서버 블록은 포트 80에서 지정된 도메인의 수신 연결을 수신 대기합니다.server_name linuxize.com www.linuxize.com
서버 블록의 도메인 이름을 지정합니다. 도메인 이름으로 바꾸십시오.return 301
트래픽을 사이트의 HTTPS 버전으로 리디렉션합니다.$request_uri
변수는 인수를 포함한 전체 원래 요청 URI입니다.
일반적으로 사이트의 HTTPS www 버전을 www가 아닌 사이트로 리디렉션하거나 그 반대로도 리디렉션하려고합니다. 리디렉션을 수행하는 데 권장되는 방법은 www 버전과 www가 아닌 버전 모두에 대해 별도의 서버 블록을 만드는 것입니다.
예를 들어 HTTPS www 요청을 www가 아닌 것으로 리디렉션하려면 다음 구성을 사용합니다.
server { listen 80; listen:80; server_name linuxize.com www.linuxize.com; return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name www.linuxize.com; #… other code return 301 https://linuxize.com$request_uri; } server { listen 443 ssl http2; server_name linuxize.com; #… other code }
모든 사이트를 HTTPS로 리디렉션
서버에서 호스팅되는 모든 웹 사이트가 HTTPS를 사용하도록 구성되어 있고 각 사이트에 대해 별도의 HTTP 서버 블록을 만들지 않으려면 단일 범용 HTTP 서버 블록을 만들 수 있습니다. 이 블록은 모든 HTTP 요청을 적절한 HTTPS 블록으로 리디렉션합니다.
방문자를 사이트의 HTTPS 버전으로 리디렉션하는 단일 범용 HTTP 블록을 생성하려면 Nginx 구성 파일을 열고 다음을 변경하십시오.
server { listen 80 default_server; listen:80 default_server; server_name _; return 301 https://$host$request_uri; }
코드를 한 줄씩 분석해 봅시다:
-
listen 80 default_server
이 서버 블록을 일치하지 않는 모든 도메인에 대한 기본 (포괄) 블록으로 설정합니다.server_name _
-_
은 (는) 실제 도메인 이름과 절대 일치하지 않는 잘못된 도메인 이름입니다.return 301
트래픽을 상태 코드 301 (영구적으로 이동)로 해당 HTTPS 서버 블록으로 리디렉션합니다.$host
변수는 요청의 도메인 이름을 보유합니다.
예를 들어, 방문자가 브라우저에서
http://example.com/page2
를 열면 Nginx는 요청을
https://example.com/page2
리디렉션합니다.
가능한 경우 글로벌 HTTP에서 HTTPS로 리디렉션하는 대신 도메인별로 리디렉션을 생성하는 것이 좋습니다.
결론
웹 사이트에 SSL 인증서가 설치되면 HTTP 트래픽을 HTTPS로 리디렉션해야합니다.
Nginx에서 HTTP를 HTTPS로 리디렉션하는 기본 방법은 별도의 서버 블록을 만들고 301 리디렉션을 수행하는 것입니다.
니 진스Facebook은 추가 보안을 위해 모든 사용자를 HTTPS로 이동합니다.

데이터 이동에 암호화 계층이 추가되어 공격자가 정보를 더 잘 보입니다.
Facebook 리디렉션 버그가 수정되었지만 문제가 발생했습니다.

버그로 인해 Facebook에 통합 된 타사 웹 사이트의 사용자가 Facebook.com으로 리디렉션되었습니다. 짧은 시간 동안 소셜 네트워킹 웹 사이트는 말했다.
Http를 죽임으로써보다 안전한 https 표준으로 이동하십시오.

HTTPS가 인터넷의 사실상 표준이 되려면 오래된 HTTP 표준이 죽어야합니다. 움직임이 시작되었지만 아직 완료되지 않았습니다.