1. nginx를 다운 받는다.

# 설치
sudo apt-get install nginx

# 설치 확인 및 버전 확인
nginx -v

2. letsencrypt 설치를 위해 다음과 같은 순서로 명령어를 입력

sudo apt-get install letsencrypt

sudo systemctl stop nginx

sudo letsencrypt certonly --standalone -d [도메인명]

3. conf 작성

cd /etc/nginx/sites-available

sudo vi proxy-setting.conf
client_max_body_size 1G;

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

    server_name j9b307.p.ssafy.io;

    # HTTP에서 HTTPS로 리다이렉션 설정
    location / {
        return 301 https://$host$request_uri;
    }
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name j9b307.p.ssafy.io;

    location / {
        proxy_pass <http://localhost:3000>;
        proxy_redirect <http://localhost:3000/> <http://j9b307.p.ssafy.io/>;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /api {
        proxy_pass <http://localhost:5000/api>;
        proxy_redirect <http://localhost:5000/> <http://j9b307.p.ssafy.io/>;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    ssl_certificate /etc/letsencrypt/live/j9b307.p.ssafy.io/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/j9b307.p.ssafy.io/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
}

4. 기존 nginx port 변경

cd /etc/nginx/sites-enabled

vi default

# 아래와 같이 변경

Untitled

sudo ln -s /etc/nginx/sites-available/proxy-setting.conf /etc/nginx/sites-enabled/proxy-setting

테스트

sudo nginx -t

Untitled

sudo systemctl restart nginx