반응형

EC2 Ubuntu 환경에서 HTTPS 적용 방법 (nginx)

 

1. aws EC2에서 우분투로 인스턴스 생성했다는 것을 가정한다. 

 

2. ssh 접속

$ ssh -i "[key].pem" ubuntu@[IP 주소]

 

3. 현재 사용가능한 패키지 및 버전 목록 업데이트

$ sudo apt-get update

 

4. Git 설치

$ sudo apt-get install git

 

5. Open JDK 11 설치

$ sudo apt-get install openjdk-11-jdk

 

6. git clone 및 build

-- apps 폴더 하위에 프로젝트 clone 예정
$ mkdir apps

$ git clone [git URL]
-- 권한 할당
$ sudo chmod 777 ./gradlew 

./gradlew build

 

7. 개발에 필요한 기본 라이브러리 설치

$ sudo apt-get install -y build-essential
$ sudo apt-get install curl

 

8. nginx 설치

$ sudo apt-get install nginx

 

9. root로 접속하여 nginx.conf 파일에 접근

$ sudo su 
$ vim /etc/nginx/nginx.conf

 

10. nginx.conf에 아래 코드 추가를 추가한다.

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/site-enabled/*;

# include 아래 내용 추가
server {
       server_name [도메인 주소]
       listen 80;
       location / {
                proxy_set_header HOST $host;
                proxy_pass http://127.0.0.1:8080;
                proxy_redirect off;
       }
}

도메인 주소에는 서브도메인을 넣어도 상관없다.

 

설정 파일을 변경했을 경우에는 nginx를 재시작해야한다.

sudo service nginx restart

 

11. certbot 설치

$ sudo apt-get remove certbot
$ sudo snap install --classic certbot

# nginx 자동 설정
$ sudo certbot --nginx

메일 주소 입력 후, y를 입력하면 성공이다. 

 

12. 80 포트 접속 시 443으로 리다이렉트 

# nginx.conf 파일
# 아래 코드 추가
server {
    if ($host = [도메인 주소]) {
        return 301 https://$host$request_uri;
    } # managed by Certbot
                server_name [도메인 주소]
                listen 80;
    listen 80;
# 아래 내용 주석 또는 삭제
#    return 404; # managed by Certbot		
# 추가 
     return 301 https://$host$request_uri;

 

위에까지 진행하면 http에서 https로 리다이렉트까지 완료된다.

물론 이 과정이 오기까지에는 인스턴스 인바운드 규칙에서 443포트를 설정했어야한다. 

 

serbot는 무료 인증서이므로 90일 마다 갱신해주어야하기 때문에 crontab 을 이용하여 자동으로 갱신될 수 있도록 지정할 수 있다.

 

# cron 구성으로 renew 주기적 실행
certbot renew --dry-run

crontab -e

# 2달마다 갱신되도록 아래 내용 추가
0 0 1 * * certbot renew --renew-hook "sudo service nginx restart"

# ctrl+ X로 빠져나오기

# crontab 목록 조회
crontab -l
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기