Skip to content

Instantly share code, notes, and snippets.

@LeoHeo
Last active June 29, 2016 05:22
Show Gist options
  • Save LeoHeo/1f19a661980ae55c1c458275d1e920e5 to your computer and use it in GitHub Desktop.
Save LeoHeo/1f19a661980ae55c1c458275d1e920e5 to your computer and use it in GitHub Desktop.

꼭 Nginx와 같은 full web server를 앞에 두고 사용해야 하는가? 그렇다면 왜 그래야 하는가?

반드시 Nginx와 같이 써야 하는 것은 아니다. uWSGI 만으로도 Service를 제공하는 것이 가능하다.

가능한가 가능하지 않은가에 답변에 대해서는 가능하다는 답변을 먼저 할 수 있다.

그렇다면 Nginx와 같이 사용하므로서 얻는 이득은 무엇인가? 가장 큰 장점중에

하나는 Nginx가 가진 보다 향상된 Static Content (CSS, Javascript 등) 핸들링을 통해서 서버에 발생되는 Load를 줄일 수 있다.

http://serverfault.com/questions/590819/why-do-i-need-nginx-when-i-have-uwsgi

https://lincolnloop.com/blog/uwsgi-swiss-army-knife/

같이 사용하는 실 사례

Spoqa 블로그

이러한 처리는 1차적으로 nginx를 통해 이뤄지는데, 이 중 서버사이드에서 처리가 필요한 경우에는 uwsgi라는 데몬이 이 처리를 담당합니다. (구버젼의 Apache Tomcat을 사용하시던 Java 개발자분들은 Apache Tomcat과 Apache httpd와의 관계를 떠올리시면 편합니다.)

이 경우 uwsgi는 일종의 어플리케이션 컨테이너(Application Container)로 동작하게 됩니다. 적재한 어플리케이션을 실행만 시켜주는 역할이죠. 이러한 uwsgi에 적재할 어플리케이션(스포카 서버)에는 일종의 규격이 존재하는데, 이걸 WSGI라고 합니다.(정확히는 WSGI에 의해 정의된 어플리케이션을 돌릴 수 있게 설계된 컨테이너가 uwsgi라고 봐야겠지만요.) WSGI는 Python 표준(PEP-033)으로 HTTP를 통해 요청을 받아 응답하는 어플리케이션에 대한 명세로 이러한 명세를 만족시키는 클래스나 함수, (__call__을 통해 부를 수 있는)객체를 WSGI 어플리케이션이라고 합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment