기계적 인조 인간

nginx에서 http를 https로 리디렉션

If Google Was A Guy (Full Series)

If Google Was A Guy (Full Series)

차례:

Anonim

이 안내서에서는 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 리디렉션을 수행하는 것입니다.

니 진스