Using Let's Encrypt to Enable HTTPS for a Streamlit Web Service

여기서 답을 찾을 수 있을 것 같다. 조만간 확인해보자.

질문을 구체화할 수 있는 메모들

  1. 마이크로서비스 중 업계에서 가장 많이 사용되는 Nginx와 최근 Python을 사용하여 웹형태로 빠르게 데모를 만들 수 있는 Streamlit을 하나의 Docker 이미지에서 만드는 방법을 공유합니다.
  2. To publish a web service using Streamlit to the public, the public port will be changed to the port used by general users while enabling HTTPS. An SSL certificate is required for HTTPS. In this case, Nginx is used to route the Streamlit web services to HTTP (port 80). Nginx must be configured to redirect to HTTPS with SSL/TLS certificate.
  3. 결국 로드밸런서의 본질은 부하를 분산시키는 것이다. 로드 밸런서를 이용해 HTTP-HTTPS 리다이렉션을 처리하도록 설정하는 방법도 있겠지만, 만약 린하게 하고 싶다면 SSL인증서를 EC2내에 다운로드받아 Nginx 컨테이너를 하나 더 만들어서 파이썬 서버 컨테이너와 함께 EC2 내에 띄우는 편이 낫다.
  4. HTTPS support … We recommend performing SSL termination in a reverse proxy or load balancer for self-hosted and production use cases, not directly in the app. … The configuration value should be a local file path to a cert file and key file. These must be available at the time the app starts.

질문을 해소하기 위해 해소해야 하는 질문들

  1. 로드밸런서에 연결된 웹 서버와 로드밸런서가 서로 평문으로 소통한다면, 웹 서버에서 HTTPS를 지원할 필요가 없지 않는가?

질문과 관련한 답을 작성한 글들

  1. a1.2.a9.1.1.7.2. title: SSL 종료(SSL Termination)는 외국어가 한국어로 번역되는 순간을 의미한다. 내가 외국어를 한국어로 직접 번역하는 것보다 번역가를 고용하고 한국어만 듣고 생각하는 편이 편하다. 이렇게 번역가에게 번역의 짐을 떠안도록 만들어서 생각을 편하게 돕는 일을 SSL 오프로딩(SSL Offloading)이라고 한다. SSL 종료 프록시는 nginx를 이용해 직접 구축하거나, AWS 로드밸런서의 기능을 이용할 수도 있다.