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)
'개발 > 백엔드' 카테고리의 다른 글
[Web Server 이해하기] Apache vs Nginx (0) | 2020.03.18 |
---|---|
[Web Server 이해하기] CGI / WAS / WSGI (0) | 2020.03.18 |
[Web Server 이해하기] Nginx Configuration 설정법 (0) | 2020.03.18 |
[Docker 이해하기] Docker Configuration 설정법 (0) | 2020.03.18 |
[Django 공식문서 번역] REST Framework - Viewset and Router (0) | 2020.03.18 |