[Nginx, uWSGI, Flask] AWS Route 53, ALB, SSL 적용

2DH·2023년 7월 27일
0

Nginx,uWSGI,Flask

목록 보기
2/2

해당 게시물은 Quicksight Embedding 을 위해 WebApplication 개발 전 DNS와 SSL이 적용된 웹사이트가 필요하여 사전 PoC차원에서 작성하는 게시물입니다.

이전 Web Application 설치 에 이어 해당 Web Application을 DNS를 통해 접근할 수 있도록 하는 작업을 작성하겠습니다.

아키텍처

1. WebApplication

Web Application 설치

2. AWS Route 53

  • 도메인 구매 및 등록을 위한 DNS 서비스인 AWS Route 53을 이용
  • Embedding QuickSight를 구현하려면 SSL 인증이 되는 DNS가 필요함(ACM)

2.1 도메인 구매

  • 원해는 도메인 명칭으로 해서 구매 (시간이 조금 소요됨)
  • 도메인마다 가격이 다르며, 많은 사용자들이 잘 사용하지 않는 패턴의 도메인이 가격이 저렴하다.

2.2 AWS Certificate Manager(ACM)

  • AWS Certificate Manager(ACM)는 AWS 웹 사이트와 애플리케이션을 보호하는 퍼블릭 및 프라이빗 SSL/TLS X.509 인증서와 키를 만들고, 저장하고, 갱신하는 복잡성을 처리하는 서비스
  • AWS 내에서 인증서를 만들 수도 있고, 외부 인증서를 가지고 와서 적용할 수도 있다.

2.2.1 인증서 요청

  • 완전히 정규화된 도메인 이름
    • *.domain.co.kr (다수의 도메인을 관리할 경우)
    • domain.co.kr


2.2.2 소유권 인증

Route 53에서 레코드 생성

2.2.3 발급 완료

3. ALB(Application Load Balancer)

3.1 보안그룹 생성 및 수정

3.1.1 ALB 보안그룹

  • 회사 IP만 수용할 수 있는 80, 443 설정

3.1.2 EC2 보안그룹

  • 회사 IP 접근 (SSH만 두고 → 우선 테스트용) 나머지 ALB로 전환

3.2 Target Group 생성 1개 생성

  • Port 80를 Target 으로하는 EC2 Group을 생성
  • Port 443을 이용하려면 설치형 SSL을 통해 Nginx 자체에서도 443 SSL으로 Listen할 수 있도록 처리해야됨

3.3 ALB 생성

  • 이름 : embedding-QuickSight-ALB
  • 체계 : 인터넷 경계(외부노출)
  • VPC
    • quicksight vpc
    • Public Subnet 선택(3개)
  • 보안 그룹
    • 좀전에 만들었던 ALB 용 SG 선택
  • 리스너
    • 443, 80 포트 위에서 생성한 대상 그룹 선택
  • 보안 리스너 (SSL인증서 연결)

3.4 ALB 테스트

ALB에서 도출된 DNS를 이용하여 브라우저에서 접근

4. Route 53, ALB 연결

4.1 레코드 생성


4.2 테스트(위와 결과는 동일)


5. HTTPS (SSL) 처리

5.1 Nginx 설정(ACM)

sudo vi /etc/nginx/sites-available/geek_flask_app.conf

server
{
  listen 80;
  server_name *.domain.co.kr;

  # HTTP 요청을 HTTPS로 리다이렉트
  if ($http_x_forwarded_proto = 'http'){
    return 301 https://$host$request_uri;
  }

  location /
  {
    include     uwsgi_params;
    uwsgi_pass  unix:/run/geek_flask_app.sock;
  }
}
  • server {} 내부 server_name은 구매한 도메인으로 변경
  • http 요청을 https로 리다이렉트
sudo systemctl restart nginx
sudo systemctl status nginx

5.2 ALB Rule 추가 (HTTP→HTTPS)

  • HTTP 리스너 리디렉션 대상 삭제 후 신규 추가 → 업데이트

5.3 확인(자물쇠)


업로드중..

참조

[Infra] flask, nginx, uwsgi(1) 개념
uWSGI Archives - aster.cloud
[Python] Flask, Gunicorn, Nginx로 EC2배포하기[2]

profile
Becoming the Data Engineer

0개의 댓글