🧡 AWS
AWS EC2에 HTTPS 적용하기 (feat. Nginx, Certbot)
MNY
2024. 10. 4. 14:02
728x90
반응형
Keyword
1. certbot
2. nginx
3. letencrypt
4. domain
https 적용 방법들?
- 스프링 자체 적용
- nginx 사용 ✅
- OSI 7계층의 L4계층?
Github Clone
* 해당 과정은 EC2 인스턴스에서 진행
init-letsencrypt.sh 만들기
init-letsencrypt.sh 파일 생성:
vi init-letencrypt.sh
작업 모드로 변경: i
init-letsencrypt.sh 파일 작성:
- 해당 깃허브에서 init-letsencrypt.sh 파일의 내용 복사
- 우리가 만든 EC2 인스턴스의 init-letsencrypt.sh 파일에 붙여넣기
- 도메인명 변경
- 우리가 만든 EC2의 public IP로 변경
- 도메인(ex: todayspace.com)이 있다면 도메인명으로 변경
- 단, 구매한 도메인에 우리가 만든 EC2 인스턴스의 public IP와 연결되어 있어야 함
- 다음 단계(Jenkins)로 넘어가기 위해서는 도메인 필요
- 무료, 유료 상관없으나 원활한 작업을 위해서는 유로 권장
- 이메일 변경
저장하고 나가기: ESC + :wq
docker-compose.yml 업데이트
* 해당 과정은 EC2 인스턴스에서 진행
docker-compose.yml 업데이트
docker-compose.yml 경로로 가기:
- 절대 경로 : /home/ubuntu
- 상대 경로 : . (현재 디렉토리)
- 명령어
- pwd : 현재 경로
- ls -al : 현재 디렉토리의 파일 전체 보기 ( . 숨김 파일 포함 )
- ls : 현재 디렉토리의 파일 보기 ( 숨김 파일 제외 )
docker-compose.yml 파일 열기:
vi docker-compose.yml
작업 모드로 변경: i
docker-compose.yml 파일 업데이트
version: '3.8'
services:
app:
image: today-space-back:latest
container_name: today-space-back
env_file:
- ./config/.env
ports:
- "8080:8080"
depends_on:
- db
db:
image: postgres:14
container_name: today-space-db
env_file:
- ./config/.env
volumes:
- db_data:/var/lib/postgresql/data
ports:
- "5432:5432"
nginx:
image: nginx:latest
container_name: today-space-nginx
ports:
- "80:80"
- "443:443" // add
volumes:
- ./data/nginx/app.conf:/etc/nginx/conf.d/default.conf
- ./data/certbot/conf:/etc/letsencrypt // add
- ./data/certbot/www:/var/www/certbot // add
depends_on:
- app
certbot:
image: certbot/certbot
restart: unless-stopped
volumes:
- ./data/certbot/conf:/etc/letsencrypt
- ./data/certbot/www:/var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
volumes:
db_data:
저장하고 나가기: ESC + :wq
app.conf(nginx.conf) 업데이트
* 해당 과정은 EC2 인스턴스에서 진행
app.conf 업데이트
app.conf 경로로 가기:
- 절대 경로 : /home/ubuntu/data/nginx
- 상대 경로 : ./data/nginx
- 명령어
- cd [디렉토리 경로] : 입력한 [디렉토리 경로]로 이동
- cd ../ : 상위 디렉토리로 이동
- cd - : 이전 디렉토리로 이동
app.conf 파일 열기:
vi app.conf
작업 모드로 변경: i
app.conf 파일 업데이트:
# app.conf
server {
listen 80;
server_name today-space.com; # 도메인명 또는 인스턴스 public IP
server_tokens off;
location /.well-known/acme-challenge/ {
allow all;
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name today-space.com; # 도메인명 또는 인스턴스 public IP
server_tokens off;
ssl_certificate /etc/letsencrypt/live/today-space.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/today-space.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
root /usr/share/nginx/html;
try_files $uri /index.html;
index index.html index.htm;
}
location /v1 {
proxy_pass http://today-space.com:8080; # 혹은 다른 내부 네트워크 서비스로 설정
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
저장하고 나가기: ESC + :wq
참고 자료
728x90
반응형