[Infra] flask, nginx, uwsgi(1) 개념

업데이트:

flask, nginx, uwsgi(1) 개념

참고링크

운영체제 프론트엔드 백엔드 데이터베이스 인프라
리눅스구조 js필터 아파치에러로그 행삭제 아파치스쿱
프로세스 헬로월드 웹서버개념 ES기초 로그분석
네임스페이스 프로젝트생성 아파치설치 MySQL기초 beeline
디렉토리 헤더생성 flask연동 큐브리드 하둡기초
리다이렉션 async-get 장고MsSQL연결 null공백 나이파이
쓰레드 async-post 장고MySQL연결 MySQL설치(win) 백본
라즈베리파이설치 로그인페이지 장고inpectdb MySQL테이블생성 제플린
OSI7계층소개   장고read   SSL인증
OSI1계층   장고insert   커버로스
OSI2계층   장고put   도커개념
OSI3계층   장고del   도커설치
OSI4계층   flask한글요청   도커기초
OSI5,6,7계층       도커이미지
DNS서버       컨테이너네트워크
DHCP       도커API
bashrc       도커컴포즈
bash       도커볼륨
ifconfig       장고이미지
소켓프로그래밍       도커postgre
리눅스유저생성       도커이미지삭제
netstat포트열기       도커Redis
컴파일러       k8s구조
운영체제vs커널       k8s설치
작업스케쥴링       k8s서비스배포
디스크추가       POD네트워크
aws유저추가       퍼시스턴트볼륨
기초명령어       k8s에러
포트번호        

관련 내용 복습하기

1. 전체 구조

flask, nginx, uwsgi의 전체 구조는 다음과 같습니다.

2. 사용자와 nginx

우선 사용자는 크롬과 같은 웹 브라저를 통해 웹서버로 HTTP 요청을 합니다. 그 요청을 받는 웹서버를 nginx라고 가정하겠습니다. (아파치 서버를 사용할 수도 있습니다.) nginx는 정적페이지를 담당합니다.

3. nginx와 uWSGI

nginx는 동적 페이지 요청을 하기 위해 장고 또는 플라스크에게 요청 해야하는데, 문제는 nginx는 파이썬이라는 언어를 모른다는 것이 문제입니다. 따라서 nginx는 장고 혹은 플라스크와 이어줄 중계인인 uWSGI에게 요청합니다. WSGI는 Web Server Gateway Interfece로 웹서버(nginx)와 웹 애플리케이션(Flask)의 중계 역할을 합니다.

nginx와 uWSGI는 서로 유닉스 소켓으로 통신합니다. 물론 nginx와 uWSGI는 HTTP통신을 해도 되지만 둘다 같은 서버내에 있으므로 HTTP 통신보다는 유닉스 소켓(unix socker) 통신을 하는 것이 오버헤드(overhead)가 적어 효율이 좋습니다.

4. uWSGI와 웹애플리케이션(django or flask)

nginx에게 동적 페이지 요청을 받은 uWSGI는 웹 애플리케이션인 django 또는 flask에게 다시 요청합니다.

5. 웹 애플리케이션과 DB

웹 애플리케이션인 django 또는 flask가 DB를 봐야할 일이 있다면 DB를 참고해 작업을 수행합니다.