본문 바로가기
프로그래밍/invest helper

GCE (Google Compute Engine)에 nginx로 무료로 https 적용하기

by ® 2020. 12. 29.
반응형

GCE에 https를 적용하기 위해 가장 간단한 방법은 GCP의 load balancer 기능을 이용하는 것입니다.

 

관련 내용은 아래 링크에서 확인할 수 있습니다. 하지만, 이 방법을 사용할 경우 시간 당 비용을 지불해야 됩니다.

 

https://cloud.google.com/load-balancing/docs/ssl-certificates

 

부하가 작을 경우 큰 비용이 아니지만, 작은 서비스를 시작하는 사람에게는 부담이 될 수 있습니다.


Nginx를 이용하면 무료로 https를 적용할 수 있다.

 

GCE에 ubuntu 18.04 OS를 기준으로 방법을 설명하겠다.

 

Nginx

1. nginx 설치

sudo apt update
sudo apt install nginx -y

 

2. 발급받은 도메인을 nginx에 등록

sudo nano /etc/nginx/nginx.conf
>> /etc/nginx/nginx.conf

events {}

http {
	server {
		listen 80;
		server_name [발급받은 도메인 url];
        
		location / {
			proxy_pass [작동 중인 서버 앱 주소. ex) http://localhost:3030];
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Forwarded-Proto $scheme;
		}
	}
}

3. nginx 재시작

sudo service nginx restart
sudo service nginx reload

4. http 접속 테스트

curl http://[도메인주소]

 

Let's Encrypt

1. Let's Encrypt에서 무료로 제공하는 인증서를 받기 위해 certbot을 설치한다.

sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo add-apt-repository ppa:certbot/certbot
sudo apt update

sudo apt install certbot python3-certbot-nginx

2. 아래 명령어를 실행하면 certbot이 인증서를 이용해 Nginx 서버가 https 응답을 할 수 있게 해준다.

sudo certbot --nginx

3. Nginx 설정 파일이 제대로 설정되었는지 확인한다.

- certbot에 의해 자동으로 생성된 라인에는 # managed by Certbot 이런 주석이 붙어있다.

 

4. 접속 테스트

curl https://[발급받은 도메인]

 

인증서 자동갱신을 cron에 등록해놓기

무료인증서의 유효기간은 3개월이므로 3개월마다 갱신해줘야 한다. 까먹을 경우를 대비해 cron에 자동갱신 명령어를 등록해놓는다.

 

1. crontab 실행

sudo crontab -e

2. 85일마다 한번씩 갱신하고, Nginx 서버를 재시작시킨다.

>> cron file


0 12 */85 * * sudo certbot renew --renew-hook="sudo service restart nginx"
반응형

댓글