В чем преимущество использования NginX для Node.js?

Насколько я понимаю, Node.js не нуждается в NginX для работы в качестве http-сервера (или сервера веб-сокетов или любого другого сервера, если на то пошло), но я продолжаю читать о том, как использовать NginX вместо внутреннего сервера Node.js и не могу найти веская причина идти по этому пути


person Purefan    schedule 06.07.2010    source источник
comment
Я думаю, что это больше подходит для ServerFault.   -  person mbq    schedule 06.07.2010
comment
NGINX намного лучше справляется со статическим контентом сервера, чем Node. Это объясняется в этом блоге -js-and-nginx/" rel="nofollow noreferrer">blog.donaldderek.com/2013/08/   -  person Donald Derek    schedule 02.09.2013


Ответы (3)


Здесь http://developer.yahoo.com/yui/theater/video.php?v=dahl-node Автор Node.js говорит, что Node.js все еще находится в разработке, поэтому могут быть проблемы с безопасностью, которые NginX просто скрывает.
С другой стороны, в случае большой трафик NginX сможет разделить работу между множеством запущенных серверов Node.js.

person mbq    schedule 06.07.2010
comment
о, спасибо! Наконец-то удовлетворительный ответ. Двойное спасибо за ссылку - person Purefan; 07.07.2010

Но будьте готовы: nginx не поддерживает http 1.1 при общении с серверной частью, поэтому такие функции, как поддержка активности или веб-сокеты, не будут работать, если вы поместите узел за nginx.

UPD: см. nginx 1.2.0 - socket.io — HTTP/1.1 — Прокси-соединения через веб-сокет для получения более актуальной информации.

person Mikhail Korobov    schedule 02.08.2010
comment
Я не понимаю, есть ли какой-нибудь материал, объясняющий это? - person rizidoro; 14.09.2011
comment
Он имеет в виду, что NginX может общаться по протоколу Http 1.1 с подключающимися к нему клиентами, но не с прокси-серверами, например, если у вас есть приложение NodeJS, реализующее Socket.io, и вы подключаетесь к этому приложению через NginX, оно просто не будет работа для веб-сокетов - person Purefan; 26.09.2011
comment
Nginx поддерживает HTTP 1.1, начиная с версии 1.2.0. Не могли бы вы обновить свой ответ? - person Dan Dascalescu; 11.02.2013
comment
Я этого не знал, спасибо за подсказку. Я обновил ответ ссылкой на специальный вопрос. - person Mikhail Korobov; 12.02.2013

В дополнение к предыдущим ответам есть еще одна практическая причина использовать nginx перед Node.js, и это просто потому, что вы можете запустить более одного приложения Node на своем сервере.

Если приложение Node прослушивает порт 80, вы ограничены этим одним приложением. Если nginx прослушивает порт 80, он может проксировать запросы к нескольким приложениям Node, работающим на других портах.

Также удобно делегировать TLS/SSL/HTTPS Nginx. Выполнение TLS непосредственно в Node возможно, но это требует дополнительной работы и чревато ошибками. С Nginx (или другим прокси-сервером) перед вашим приложением вам не нужно беспокоиться об этом, и есть инструменты, которые помогут вам безопасно настроить его.

person Nate    schedule 14.04.2012