✔️ 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로 실행된다.
**나는 3.36.87.75를 입력했을 때, 우리 main화면이 나왔으면 좋겠다!**`default`, `proxy-setting`이 있는데 (`proxy-setting`은 이후에 실행하면 만들어지는 `.conf` 파일이다.)
/etc/nginx/sites-enabled
로 이동한다.
default 편집기
를 열어서port
를 변경해주고 재실행하면 된다. (재실행은 2번 참고) - default 파일을 편집하지 말고 삭제해도 되는 것 같다. (80 -> 180)
✔️ ln -s 명령어 실행한다.
sudo ln -s /etc/nginx/sites-available/proxy-setting /etc/nginx/sites-enabled/proxy-setting
✔️ 성공 여부 확인
sudo nginx -t
nginx test
가 성공했다는 것을 알 수 있다.
✔️ nginx 재시작
sudo systemctl restart nginx
이렇게 실행하면, http로 3000포트 접근시, 443 포트(https)로 리다이렉트 된다. 그리고 백엔드 url을 /api/**로 분기처리할 수 있다.
https://도메인주소
로 접근하면 배포한 웹 페이지에 접속할 수 있게된다.http://ip주소
로 접근하면 배포한 웹 페이지에 접속할 수 있다.
현재 이전 proxy-setting
을 수정하고 싶을 때가 있다.
수정하고 싶을 때는 먼저
✔️ nginx 종료 후, 설정해야 한다.
sudo systemctl stop nginx
을 입력하여 nginx을 종료한다.
sudo letsencrypt certonly --standalone -d www제외한 도메인 이름
을 입력하여 설정해준다.
✔️ /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;
}
}
✔️ sites-enabled에서 이전에 만들었던 proxy-setting을 삭제한다.
sudo rm proxy-setting
✔️ ln -s 명령어 실행한다. (다시 sites-enabled에 proxy-setting을 추가)
sudo ln -s /etc/nginx/sites-available/proxy-setting /etc/nginx/sites-enabled/proxy-setting
✔️ 성공 여부 확인
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/
client https
: https://i8d208.p.ssafy.io/
server https
: https://i8d208.p.ssafy.io/api/