운영체제 버전 확인
lsb_release -a
##result
Distributor ID: Ubuntu
Description: Ubuntu 20.04 LTS
Release: 20.04
Codename: focal
Nginx Install
sudo apt install nginx
http, https allow
sudo ufw allow 'Nginx Full'
상태가 inactivate 로 나오는 경우
sudo ufw enable
인증서 발급을 간단하게 발급/갱신하는 패키지 설치
sudo snap install --classic certbot
certbot을 활용하여 인증서 발급(내부적으로 Let’s encrypt를 거쳐 인증서를 발급해줌)
sudo certbot --nginx
## nginx config file 을 만들지 않고 ssl file 만 필요한 경우
sudo certbot certonly --nginx
/etc/nginx/sites-available 에서 생성된 설정파일(default) 확인
수정 후
server {
listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/j8a103.p.ssafy.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/j8a103.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
location / {
proxy_pass <http://localhost:3000>;
}
location /api {
proxy_pass <http://localhost:8081>;
}
location /ai {
rewrite ^/ai(/.*)$ $1 break;
proxy_pass <https://gomgom-gpu-server.com>;
}
}
server {
if ($host = j8a103.p.ssafy.io) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80 ;
listen [::]:80 ;
server_name j8a103.p.ssafy.io;
return 404; # managed by Certbot
}
인증서 정보
Certificate is saved at: /etc/letsencrypt/live/j8a103.p.ssafy.io/fullchain.pem
Key is saved at: /etc/letsencrypt/live/j8a103.p.ssafy.io/privkey.pem
This certificate expires on 2023-06-10.
server{
listen 443 ssl; # managed by Certbot
server_name j8a103.p.ssafy.io;
ssl_certificate /etc/letsencrypt/live/j8a103.p.ssafy.io/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/j8a103.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
# http -> https로 return 되었고 처음 만나게 되는 경로는 루트(/)
location / {
# 들어오는 요청을 적힌 주소로 redirect
proxy_pass <http://localhost:3000>
}
}
server{
if ($host = j8a103.p.ssafy.io) {
return 301 https://$host$request_uri;
} # managed by Certbot
listen 80;
server_name j8a103.p.ssafy.io;
return 404; # managed by Certbot
}
사이트 마다 용량 제한을 걸고 싶은 경우
server {
listen 80;
server_name your-server-domain;
client_max_body_size 10M; //여기 용량 제한
}