nginx 설정과 ssl 인증서 발급

LeeKyoungChang·2023년 2월 4일
0
post-thumbnail

📚 1. 처음으로 nginx 설치 후 setting 할 때

✔️ nginx를 다운 받는다.

# 설치
sudo apt-get install nginx

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

 

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

sudo apt-get install letsencrypt

sudo systemctl stop nginx

sudo letsencrypt certonly --standalone -d www제외한 도메인 이름

이렇게 한 후, "Congratulations!"로 시작하는 문구가 보이면, 인증서 발급이 완료된 것이다.

이후

/etc/nginx/sites-available로 이동한 후, 적절한 이름의 파일을 생성하여 다음과 같이 작성한다.

sudo vi proxy-setting.conf

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

        server_name i8d208.p.ssafy.io;

        location /{
                proxy_pass http://localhost:3000;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        location /api {
                proxy_pass http://localhost:8000/api;
        }

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

        server_name i8d208.p.ssafy.io;

        location /{
                proxy_pass http://localhost:3000;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        location /api {
                proxy_pass http://localhost:8000/api;
        }

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

 

✏️ 여기서 문제점

기존 nginx가 80번 port로 실행된다.

스크린샷 2023-02-04 오전 9 50 40 **나는 3.36.87.75를 입력했을 때, 우리 main화면이 나왔으면 좋겠다!**

/etc/nginx/sites-enabled 로 이동한다.

스크린샷 2023-02-04 오전 9 55 52 `default`, `proxy-setting`이 있는데 (`proxy-setting`은 이후에 실행하면 만들어지는 `.conf` 파일이다.)

default 편집기를 열어서 port를 변경해주고 재실행하면 된다. (재실행은 2번 참고) - default 파일을 편집하지 말고 삭제해도 되는 것 같다. (80 -> 180)

스크린샷 2023-02-04 오전 9 58 41

 

✔️ ln -s 명령어 실행한다.

스크린샷 2023-02-04 오전 10 05 03
sudo ln -s /etc/nginx/sites-available/proxy-setting /etc/nginx/sites-enabled/proxy-setting

 

✔️ 성공 여부 확인

스크린샷 2023-02-04 오전 10 06 09
sudo nginx -t

nginx test가 성공했다는 것을 알 수 있다.

 

✔️ nginx 재시작

sudo systemctl restart nginx

이렇게 실행하면, http로 3000포트 접근시, 443 포트(https)로 리다이렉트 된다. 그리고 백엔드 url을 /api/**로 분기처리할 수 있다. 

  • https://도메인주소 로 접근하면 배포한 웹 페이지에 접속할 수 있게된다.
  • http://ip주소로 접근하면 배포한 웹 페이지에 접속할 수 있다.

 

 

📚 2. conf 파일 수정할 때

현재 이전 proxy-setting을 수정하고 싶을 때가 있다.

수정하고 싶을 때는 먼저

✔️ nginx 종료 후, 설정해야 한다.

sudo systemctl stop nginx을 입력하여 nginx을 종료한다.

sudo letsencrypt certonly --standalone -d www제외한 도메인 이름 을 입력하여 설정해준다.

스크린샷 2023-02-04 오전 10 18 33

 

✔️ /etc/nginx/sites-available

/etc/nginx/sites-available 로 이동하여 proxy-setting 편집기를 열어 이와 같이 수정한다.

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

        server_name i8d208.p.ssafy.io;

        location /{
                proxy_pass http://localhost:3000;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }

        location /api {
                proxy_pass http://localhost:8000/api;
        }

}
스크린샷 2023-02-04 오전 10 12 41

 

✔️ sites-enabled에서 이전에 만들었던 proxy-setting을 삭제한다.

sudo rm proxy-setting
스크린샷 2023-02-04 오전 10 14 53

 

✔️ ln -s 명령어 실행한다. (다시 sites-enabled에 proxy-setting을 추가)

스크린샷 2023-02-04 오전 10 05 03
sudo ln -s /etc/nginx/sites-available/proxy-setting /etc/nginx/sites-enabled/proxy-setting

 

✔️ 성공 여부 확인

스크린샷 2023-02-04 오전 10 06 09
sudo nginx -t

nginx test가 성공했다는 것을 알 수 있다.

 

✔️ nginx 재시작

sudo systemctl restart nginx

이렇게 실행하면, http로 3000포트 접근시, 443 포트(https)로 리다이렉트 된다. 그리고 백엔드 url을 /api/**로 분기처리할 수 있다. 

 

✔️ 결과

client http : http://3.36.87.75/
server http : http://3.36.87.75/api/

스크린샷 2023-02-04 오전 10 28 01 스크린샷 2023-02-04 오전 10 27 57

 

client https : https://i8d208.p.ssafy.io/
server https : https://i8d208.p.ssafy.io/api/

스크린샷 2023-02-04 오전 10 28 25 스크린샷 2023-02-04 오전 10 28 12

 

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글