✔ 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
파일을 하나 만들고 다음과 같이 작성한다.
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name {EC2 도메인 주소};
location /{
proxy_pass http://localhost:3000;
proxy_set_header Connection '';
proxy_http_version 1.1;
}
location /api {
proxy_pass http://localhost:8081/api;
}
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {EC2 도메인 주소};
location /{
proxy_pass http://localhost:3000;
proxy_set_header Connection '';
proxy_http_version 1.1;
}
location /api {
proxy_pass http://localhost:8081/api;
}
ssl_certificate /etc/letsencrypt/live/{EC2 도메인 주소}/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/{EC2 도메인 주소}/privkey.pem; # managed by Certbot
}
80은 http, 443은 https 로 접근하는 것을 의미한다.
✔ Spring SSE 사용할 경우 지속 연결 설정
proxy_set_header Connection '';
proxy_http_version 1.1;
✔ Nginx 기본 포트가 80로 실행되기 때문에 /etc/nginx/sites-enabled
에서
sudo vi default
✔ 80 → 안쓰는 포트 번호(예시 180)으로 바꾼다.
server {
listen 180 default_server;
listen [::]:180 default_server;
✔ ln -s 명령어 실행한다.
sudo ln -s /etc/nginx/sites-available/proxy-setting /etc/nginx/sites-enabled/proxy-setting
✔️ 테스트 확인
sudo nginx -t
✔️ nginx 재시작
sudo systemctl restart nginx
etc/nginx/
에서
vi nginx.conf
http {
##
# Basic Settings
##
client_max_body_size 100M;
sendfile on;
# ...
sudo nginx -t
nginx -s reload
만약 proxy-setting
을 수정하고 싶다면
✔ 먼저 nginx를 종료 후, 설정해야 한다.
# nginx을 종료
sudo systemctl stop nginx
sudo letsencrypt certonly --standalone -d www제외한 도메인 이름
✔ /etc/nginx/sites-available
로 이동하여 sudo vi proxy-setting
을 입력하여 수정한다.
✔ 수정 후 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 재시작
sudo systemctl restart nginx
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name {EC2 도메인 주소};
return 301 https://{EC2 도메인 주소}$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name {EC2 도메인 주소};
location /{
proxy_pass http://localhost:3000;
proxy_set_header Connection '';
proxy_http_version 1.1;
}
location /api {
proxy_pass http://localhost:8081/api;
}
ssl_certificate /etc/letsencrypt/live/{EC2 도메인 주소}/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/{EC2 도메인 주소}/privkey.pem; # managed by Certbot
}