HTTPS 로 서비스를 제공해야 사용자도 안심할수 있고 구글에서도 높은 점수를 받을 수 있습니다.


nginx 에서 HTTPS 를 제대로 설정했다면 그후에는 HTTP 로 들어오는 연결을 HTTPS 로 리다이렉토하도록 설정하는 게 좋습니다.


설정

강제 HTTPS 전환 설정은 아주 간단합니다.

이제 example.com 가상 호스트 설정을 다음과 같이 HTTP/HTTPS 설정을 했다고 가정해 보도록 하겠습니다.

server {
    listen       80 443 ssl https;
    server_name  example.com
    root         html;

    ssl                  on;
    ssl_certificate      /etc/pki/tls/certs/example.com.chained.crt;
    ssl_certificate_key  /etc/pki/tls/private/example.com.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_prefer_server_ciphers   on;
    location ~ /\.ht {
         deny  all;
    }
}


강제 전환을 위해 호스트 설정에서 server 블록을 80 과 443으로 나눠줍니다.

server {
    listen       80;
    server_name  example.com;
    root         html;
}

server {
	listen 		 443 ssl https;
    server_name  example.com
    root         html;

    ssl                  on;
    ssl_certificate      /etc/pki/tls/certs/example.com.chained.crt;
    ssl_certificate_key  /etc/pki/tls/private/example.com.key;
    ssl_session_timeout  5m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers  ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
    ssl_prefer_server_ciphers   on;
    location ~ /\.ht {
         deny  all;
    }
}


이제 위쪽 HTTP 로 제공하는 서버 블록에 location 설정을 다음과 같이 추가해 주면 모든 HTTP 요청을 HTTPS 로 301 Redirect 응답을 보내줍니다.

server {
	listen 80;
	server_name example.com;
	root html;
	
	location / {
        return 301 https://example.com$request_uri;
    }
}


같이 보기