EC2 node ~ nginx ~ https 설정

김현진·2021년 2월 17일
2

EC2에 node, docker, nginx, https설정

  • EC2 리눅스서버를 만들었다는 가정

  • 해당 아래코드를 그냥 복붙하면 됨.

  • docker 환경에서 server를 돌릴예정이므로 docker를 사용하지 않으면 docker설치는 안해도 된다.

  • 나중에 복붙용도로 작성

sudo apt-get update

sudo apt-get install -y build-essential

sudo apt-get install curl

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash --

sudo apt-get install -y nodejs

node -v
npm -v 버젼확인

sudo apt-get install nginx

//docker 설치
curl -s https://get.docker.com/ | sudo sh

// 우분투에서 유저 권한추가
sudo usermod -aG docker ubuntu 

// docker compose 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

// 권한부여
sudo chmod +x /usr/local/bin/docker-compose

// docker-compose까지 설치 후 docker-ps 시 에러발생하면 실행
sudo groupadd docker

sudo usermod -aG docker $USER

newgrp docker

sudo vim /etc/nginx/nginx.conf에 접속

쭉쭉내리다 보면

include /etc/nginx/sites-enabled/*;
# 이코드 바로 밑에 하단 코드작성

# include /etc/nginx/sites-enabled/*; # 나는 해당코드도 주석처리를 했다.

server {
                server_name 도메인주소; # ex) naver.com
                return 301 도메인주소$request_uri; ex) https://naver.com 
}

# 해당 도메인주소는 탄력적IP로 할당


-- 기존방식 --
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
./certbot-auto
---- 기존방식이 안됨-----


-- snap nginx--
sudo snap install certbot --classic
sudo apt-get install nginx
sudo certbot --nginx

이후에  /etc/letsencrypt/live 해당 디렉토리에 .pem 확장자로 된 파일이 생겼는지 확인

sudo vim /etc/nginx/nginx.conf 접속

아까 상단에 작성한 코드 바로 밑에 작성

server {
                listen 443 ssl; # managed by Certbot
                ssl_certificate /etc/letsencrypt/live/www.비밀.com/fullchain.pem; # managed by Certbot
                ssl_certificate_key /etc/letsencrypt/live/www.비밀.com/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_set_header Host $host;
                        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                        proxy_set_header X-Forwarded-Proto $scheme;
                        proxy_set_header Upgrade $http_upgrade;
                        proxy_set_header Connection "upgrade";
                        proxy_set_header X-Real-IP $remote_addr;
                        proxy_pass http://127.0.0.1:3000;
                        proxy_redirect off;
                }
  • certbot을 실행 하면 ssl 해당코드가 자동으로생기고 nginx 설정을 추가하면 된다.
  • vim으로 nginx로 접근시에는 sudo명령으로 접속
  • 설정이후에 nginx 재 시작

nginx 명령어

// 시작
$ sudo service nginx start
$ sudo systemctl start nginx
$ sudo /etc/init.d/nginx start

// 재시작
$ sudo service nginx restart
$ sudo systemctl restart nginx
$ sudo /etc/init.d/nginx restart

// 중지
$ sudo service nginx stop
$ sudo systemctl stop nginx
$ sudo /etc/init.d/nginx stop

// 상태
$ sudo service nginx status
$ sudo systemctl status nginx

// 설정 reload
$ sudo service nginx reload
$ sudo systemctl reload nginx
$ sudo nginx -s reload

// 설정파일 문법 체크
$ sudo nginx -t
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
0 */12 * * * root certbot -q renew --nginx --renew-hook 'service nginx reload'

혹시나 페이지 리다이렉션 수가 많다는 페이지가 뜬다면 nginx 재새작을 한번 해보는게 좋다.

참고자료(제로초님 블로그)

https://www.zerocho.com/category/NodeJS/post/5ef450a5701d8a001f84baeb

profile
기록의 중요성

0개의 댓글