์์ง์์ค(Nginx)๋ ๋์์ ์ ์ฒ๋ฆฌ์ ํนํ๋ ๊ฒฝ๋ ์น ์๋ฒ ํ๋ก๊ทธ๋จ์ด๋ค.
Apache๋ณด๋ค ๋์์ด ๋จ์ํ๊ณ , ์ ๋ฌ์ ์ญํ ๋ง ํ๋ค.
HTTP Web Server๋ก ํ์ฉ๋๋ฉฐ, Reverse Proxy Server๋ก ํ์ฉํ์ฌ WAS ์๋ฒ์ ๋ถํ๋ฅผ ์ค์ด๋ ๋ก๋ ๋ฐธ๋ฐ์๋ก๋ ํ์ฉ๋๋ค.
1. HTTP Server๋ก์ ์ ์ ํ์ผ์ serve ํ๋ค.
Apache ์๋ฒ์์ ์ฐจ์ด
2. ์์ฉํ๋ก๊ทธ๋จ ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด๋ ๋ฆฌ๋ฒ์ค ํ๋ก์๋ก์์ ์ญํ
๋ฆฌ๋ฒ์ค ํ๋ก์๋ ์ธ๋ถ ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์ ๊ทผ ์, ์ค๊ฐ์์ ์ค๊ฐ์ ์ญํ ์ ํ์ฌ ๋ด๋ถ ์๋ฒ๋ก ์ ๊ทผํ ์ ์๋๋ก ๋์์ฃผ๋ ์๋ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ๋ ๊ฐ์ง ์๋ฒ์ requestํ๋ฉด ํ๋ก์ ์๋ฒ๊ฐ ๋ฐฐํ ์๋ฒ(reverse server)๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ์ญํ ์ ํ๋ค. ์ฌ๊ธฐ์ ํ๋ก์ ์๋ฒ๊ฐ Nginx, ๋ฆฌ๋ฒ์ค ์๋ฒ๊ฐ ์์ฉํ๋ก๊ทธ๋จ ์๋ฒ๋ฅผ ์๋ฏธํ๋ค.
๋ฆฌ๋ฒ์ค ํ๋ก์๋ฅผ ํ์ฉํ์ ๋ ์ป์ ์ ์๋ ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
์น ์์ฉํ๋ก๊ทธ๋จ ์๋ฒ์๋ ์์ฒญ(request)์ ๋ํ ๋ฒํผ๋ง์ด ์๊ธฐ ๋๋ฌธ์ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ App ์๋ฒ์ ์ง์ ์์ฒญํ๋ ๊ฒฝ์ฐ, ํ๋ก์ธ์ค 1๊ฐ๊ฐ ์๋ต ๋๊ธฐ ์ํ๊ฐ ๋์ด์ผ๋ง ํ๋ค. ๋ฐ๋ผ์ ํ๋ก์ ์๋ฒ๋ฅผ ๋ ์ผ๋ก์จ ์์ฒญ์ ๋ฐฐ๋ถํ๋ ์ญํ ์ ํ๋ค.
Django๊ฐ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์น์๋ฒ๋ฅผ ํตํด์ ๋ฐ์ ๋ WSGI๋ผ๋ ๊ฒ์ ๋ฐ๋์ ๊ฑฐ์น๊ฒ ๋๋ค.
WSGI(Web Server Gateway Interface)๋ ์ด๋ฆ๋ง ๋ด๋ ์น์ ๋ํ ์ธํฐํ์ด์ค ์์ ์ ์ ์๋ค. ๊ทธ๋์ ๋ฒ์ฉ์ ์ธ ์น ์ธํฐํ์ด์ค๋ผ๊ณ ์๊ฐํ ์๋ ์์ง๋ง WSGI๋ ์ค์ง ํ์ด์ฌ์ ์ํ ์ธํฐํ์ด์ค์ด๋ค. ์น ์๋ฒ์์ ์ ๋ฌํด์ฃผ๋ HttpRequest๋ค์ ํ์ด์ฌ์ด ์ดํดํ ์ ์๋ ์ธ์ด๋ก ํด์ํด์ ํ์ด์ฌ ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณด๋ด์ฃผ๋ ์ญํ ์ ๋งก๊ฒ๋๋ค. Django๋ Python์ผ๋ก ๋ง๋ค์ด์ง ํ๋ ์์ํฌ์ด๊ณ ๋ฐ๋ผ์ Django์ ์น์๋ฒ๋ฅผ ๊ฒฐํฉํ๊ธฐ ์ํด์ WSGI๊ฐ ํ์ํ๋ค.
Django์๋ runserver๋ผ๊ณ ๋ถ๋ฆฌ๋ ๊ฐ๋ฐํ๊ฒฝ์ ์ ํฉํ ์๋ฒ๋ฅผ ๋๋ฆด ์ ์๋ ๊ธฐ๋ฅ์ด ์๋ค. ํ์ง๋ง runserver๋ ๋จ์ผ ์ค๋ ๋๋ก ๋์ํ๊ธฐ ๋๋ฌธ์ ์์ฒญ์ด ๋ง์์ง๋ฉด ์ฒ๋ฆฌ๋ฅ๋ ฅ์ด ํ์ ํ ๋จ์ด์ง๋ ๋จ์ ๋๋ฌธ์ ์ค์ ๋ฐฐํฌํ๊ฒฝ์์๋ ์ฌ์ฉํด์๋ ์๋๋ ๋ฐฉ๋ฒ์ด๋ค. ๊ทธ๋์ WSGI๋ฅผ ์ฌ์ฉํ๊ฒ๋๋ค. WSGI๋ ๋ฉํฐ ์ค๋ ๋๋ฅผ ์์ฑํ ์ ์๊ธฐ ๋๋ฌธ์ ์์ฒญ์ด ๋ง์์ ธ๋ ์์ ์ ์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. WSGI์ ์ข ๋ฅ์๋ uwsgi, gunicorn์ด ์๋์ฐ๋งฅ์ผ๋ก ์์ง๋ง ์ต๊ทผ gunicorn์ ์ฑ๋ฅ์ด uwsgi๋ณด๋ค ์ข์์ก๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ gunicorn์ ์ฌ์ฉํ๋ ์ถ์ธ์ด๋ค.
๋ฐ๋ผ์ Django์ WSGI๋ก gunicorn์ ์ฌ์ฉํ๊ฒ๋๊ณ Django์ gunicorn์ ํฉ์ณ์ WAS๋ผ๊ณ ๋ถ๋ฅธ๋ค.