Существует множество руководств по настройке nginx для взаимодействия с uWGSI, когда я хочу развернуть приложение Django.
Но зачем мне нужен nginx в этом комплекте? Сам uWSGI может обслуживать приложения WSGI Python, он может обслуживать статические файлы, он также может использовать SSL. Что может сделать nginx, чего не может uWSGI?
Ответы:
Вы не
В любом случае, это простой ответ - он вам не нужен . uWSGI сам по себе является способным сервером.
Однако другие серверы, такие как nginx, существуют дольше и (возможно, в любом случае) более безопасны, а также имеют дополнительные функции, не поддерживаемые uWSGI - например, улучшенную обработку статических ресурсов (через любую комбинацию Expires или E-Tag). заголовки, сжатие gzip, предварительно сжатый gzip и т. д.), которые могут значительно снизить нагрузку на сервер и сеть; Кроме того, сервер, такой как nginx, перед вашим приложением Django может также реализовать кеширование вашего динамического контента, помогая снизить нагрузку на сервер и даже облегчая использование CDN (что обычно не очень хорошо с динамическим контентом). ). Вы могли бы даже пойти дальше и иметь nginx на совершенно отдельном сервере, переадресовывая запросы на динамическое содержимое на кластер серверов приложений с балансировкой нагрузки, одновременно обрабатывая сам статический контент.
Например, мой блог (хотя это WordPress, но перед ним стоит nginx) настроен для кэширования сообщений в течение 24 часов и для кэширования страниц индекса в течение 5 минут; в то время как я не вижу достаточного трафика для этого, чтобы действительно иметь значение большую часть времени, это помогает моему крошечному VPS выдерживать случайный всплеск, который мог бы иначе сбить его - такой как большой всплеск трафика, когда одна из моих статей была выбрана Twitterer со многими тысячами подписчиков, многие из которых переписали его своим тысячам подписчиков.
Если бы я работал на «голом» сервере uWSGI (и предполагая, что это был сайт Django, а не WordPress), он мог бы противостоять ему просто отлично - или он мог бы рухнуть и сгореть, что стоило бы мне пропущенным посетителям , Наличие nginx перед этим может действительно помочь.
При этом, если вы просто запускаете небольшой сайт, который не будет видеть много трафика, нет никакой необходимости в nginx или чем-то еще - просто используйте uWSGI самостоятельно, если вы этого хотите. С другой стороны, если вы увидите много трафика ... ну, вы все равно можете захотеть uWSGI, но вы должны по крайней мере рассмотреть что-то перед ним, чтобы помочь с нагрузкой. На самом деле, вы должны действительно тестировать различные конфигурации вашего готового сайта, чтобы определить, что лучше всего работает для вас при ожидаемой нагрузке, и использовать все, что в итоге окажется.
источник
ИМО, если вы разместите свой сайт в Интернете, а не в лаборатории, вы можете увидеть разницу.
Представьте себе пользователя из другой страны с низкой скоростью сети, открывающего веб-браузер для доступа к вашему сайту. uWSGI будет обрабатывать это соединение Http в потоке. Этот поток может потратить довольно много времени на ожидание полного запроса Http из-за низкой скорости сети. Если ваш размер пула потоков равен 100, представьте, что 100 пользователей так медленно, что произойдет? Нет свободного потока для обработки другого запроса HTTP.
Но для Nginx все по-другому. Nginx разработан в «Reactor Pattern». Вы можете зайти в Google 'Reactor Pattern', чтобы увидеть, как он работает. Короче говоря, медленное соединение не влияет на него для обработки других запросов Http.
источник