Nginx에서 http를 https로 redirect하기

보다 안전한 웹 사이트를 위해 SSL설정하여 https를 사용한다. 이때, http 요청이 올때 http를 https로 리다이렉트 하는 방법이다. Nginx에서 설정하는 방법을 정리한다.

http를 위한 포트 80과 https를 위한 포트 443에 대한 서버블럭 설정을 분리해 주고, 포트 80 서버블럭에서 301 리다이렉트를 해주면 모든 것을 443 블럭으로 가게 된다.

$ sudo nano /etc/nginx/sites-available/default
server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name example.com;
        # 모든 http 요청을 https로 301 리다이렉트함
        return 301 https://$server_name$request_uri;
}

server {
        #listen 80 default_server;
        #listen [::]:80 default_server;

        # SSL configuration
        listen 443 ssl default_server;
        listen [::]:443 ssl default_server;
        root /var/www/html;
        # Add index.php to the list if you are using PHP
        index index.html index.htm index.php index.nginx-debian.html;
        server_name example.com;

        ssl_certificate      /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key  /etc/letsencrypt/live/example.com/privkey.pem;
        ssl_ciphers  HIGH:!aNULL:!MD5;
}

구문 오류 확인하고 문제가 없으면 nginx 서비스를 다시 시작해준다.

$ sudo nginx -t
$ sudo systemctl restart nginx

Leave a Comment