Nginx와 Https

ekgns0508·2025년 2월 16일

Nginx

목록 보기
6/8

HTTPS


HTTPS를 적용시켜야 하는 이유

  1. 보안

    데이터를 서버와 주고받을 때 암호화 시켜 통신하기 때문에 보안상 좋다.

  2. 사용자 이탈

    HTTPS를 적용하지 않으면 브라우저에서 경고창을 띄워준다. → 이는 사용자들이 불안감을 느끼고 이탈하게 되는 결과를 초래할 수 있다.


Nginx를 사용하여 Https 적용하기


Certbot 설치

$ sudo snap install --classic certbot
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Nginx에 Https를 적용시켜주는 Certbot 라이브러리를 설치한다.

Https 인증서 발급받기

$ sudo certbot --nginx -d <도메인 주소>

# 예시
$ sudo certbot --nginx -d jscode.n-e.kr
$ sudo certbot --nginx -d admin.jscode.n-e.kr

Https 인증서를 발급받는 과정을 거친다.


Certbot에 의해 Nginx 설정파일 자동 수정

server {
    server_name jscode.n-e.kr;

    location / {
            root /usr/share/nginx/nginx-frontend-react/dist;
            index index.html;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/jscode.n-e.kr/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/jscode.n-e.kr/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    server_name admin.jscode.n-e.kr;

    location / {
            root /usr/share/nginx/nginx-frontend-next/out;
            index index.html;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/admin.jscode.n-e.kr/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/admin.jscode.n-e.kr/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

}

server {
    if ($host = jscode.n-e.kr) {
		    # https로 리다이렉트 처리
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        server_name jscode.n-e.kr;
    return 404; # managed by Certbot

}

server {
    if ($host = admin.jscode.n-e.kr) {
		    # https로 리다이렉트 처리
        return 301 https://$host$request_uri;
    } # managed by Certbot

        listen 80;
        server_name admin.jscode.n-e.kr;
    return 404; # managed by Certbot

}

Certbot 라이브러리로 인해서 Nginx의 설정파일 내용을 Https를 적용시켜주는 코드로 자동으로 변환되었다. server 블록내에서 listen과 server_name 블록의 순서가 변경되었지만 보통 server 블록에서는 이 둘을 순서에 상관없이 먼저 읽어들이므로 상관없다.

기본적으로 80포트로 들어온 요청을 https 주소로 리다이렉트 해주는 코드가 추가된다. 따라서 http로 요청을 하더라도 https 주소로 리다이렉트되어 처리된다.


인프런 JSCODE(박재성)강사님의 "비전공자도 이해할 수 있는 Nginx 입문/실전" 강의를 듣고 정리한 내용입니다.

0개의 댓글