ubuntu 에서 https reverse proxy 설정 (certbot & nginx)

note

ubuntu 24.04

https reverse proxy 를 사용하여 subdomain 으로 사이트 제공

setup

sudo apt-get update
sudo apt-get install certbot
sudo apt-get install nginx

certbot

https 인증서 발급용이며 nginx 가 선행으로 설치 되어야 함

현재 인증서 확인

sudo certbot certificates

기존 인증서 삭제

sudo certbot delete

인증서 발급/갱신

sudo systemctl stop nginx

sudo certbot certonly --standalone \
     -d skelton.cc -d www.skelton.cc \
         -d subdomain_1.skelton.cc -d subdomain_2/skelton.cc

sudo systemctl start nginx

nginx

reverse proxy 로 사용하기 위한 설정

sudo vi /etc/nginx/sites-enabled/skelton.cc

위 경로에 reverse proxy 를 위한 sites 파일을 구성 하였다면

sudo ln -s /etc/nginx/sites-enabled/skelton.cc /etc/nginx/sites-available/

sites-available 에 symbolic link 를 통해 sites 를 활성화 해 줌

sudo nginx -t

이 후 위 command 를 사용해 nginx 의 sites 구성에 문제가 없다면

sudo systemctl restart nginx

sudo systemctl status nginx

nginx 재시작 및 상태 확인하면 됨

개인적으로 사용하는 sites 파일의 샘플은 아래와 같음


# skelton.cc

server {
    listen 80;
    listen [::]:80;
    server_name skelton.cc *.skelton.cc;
    location / {
        return 301 https://$host$request_uri;
    }
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name *.skelton.cc;
    ssl_certificate /etc/letsencrypt/live/skelton.cc/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/skelton.cc/privkey.pem;
    location / {
        return 404;
    }
}
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name skelton.cc www.skelton.cc;
    ssl_certificate /etc/letsencrypt/live/skelton.cc/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/skelton.cc/privkey.pem;
    location / {
        #return 404;
        client_max_body_size 64M;
        proxy_pass http://127.0.0.1:9999;
        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;
        proxy_http_version 1.1;
        proxy_set_header Upgrade "websocket";
        proxy_set_header Connection "Upgrade";
        proxy_read_timeout 86400;
    }
}
...

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다