[Web Server 이해하기] Gunicorn과 Nginx 역할분배

Ningx는 request가 가장 먼저 도착하는 곳이다.  Web application으로 보내져야만 하는 request들만을 보낸다.(필터링같은 느낌)

Gunicorn은 request를 웹 프레임워크가 이해하고 처리할 수 있는 형식으로 변환시켜 보낸다.


Nginx
Nginx는 Web server이자 Reverse Proxy이다. 아래는 Nginx가 잘하는 기능들 예시이다:
    - domain name routing
    - 정적 파일 보내기
    - 한번에 들어오는 많은 양의 request를 처리하기
    - 느린 client들 처리하기
    - 동적처리가 필요한 request들을 Gunicorn으로 보내기
    - SSL 끝내기
Nginx는 다음과 같은 일들은 할 수 없다:
    - Python web application 실행하기
    - request를 WSGI로 변역하기

Gunicorn
Gunicorn은 다음과 같은 일들에 특화되어 있다:
    - worker processes/threads 풀을 사용하여 코드 실행
    - Nginx가 보낸 request를 WSGI에 맞게 변환
    - 어플리케이션에서 보낸 WSGI response를 http response로 변환
    - request가 들어오면 실제로 파이썬 코드 실행하기
    - Gunicorn은 다양한 웹서버와 통신할 수 있음
다음과 같은 일은 할 수 없다:
    - 최전방에 나설 수 없다: DOS에 취약하다
    - SSL을 끝낼 수 없다(no https handling)


















댓글

이 블로그의 인기 게시물

[Django 공식문서 번역] REST Framework - Viewset and Router

Intel Open WebRTC Toolkit(OWT) Media server 설치하는법

[Django REST Framework] create() vs perform_create()