2010-07-06 5 views
27

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

+0

Я думаю, что он больше подходит для ServerFault. – mbq

+4

нет, это не для serverfault – mamu

+0

Хорошо, я не буду спорить ;-) – mbq

ответ

28

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

+0

о, спасибо! Наконец, удовлетворительный ответ. Двойное спасибо за ссылку – Purefan

9

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

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

+0

Я не понимаю, есть ли материал, объясняющий это? – rizidoro

+2

Что он имеет в виду, так это то, что NginX может разговаривать с Http 1.1 для клиентов, подключающихся к нему, но не к прокси-серверам, например, если у вас есть приложение NodeJS, которое реализует Socket.io, и вы подключаетесь к этому приложению через NginX, это просто не работает для websockets – Purefan

+1

Nginx делает [поддержку HTTP 1.1 с версии 1.2.0] (http://wiki.nginx.org/Main). Не могли бы вы обновить свой ответ? –

8

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

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

Также удобно передавать TLS/SSL/HTTPS в Nginx. Выполнение TLS непосредственно в узле возможно, но это дополнительная работа и склонность к ошибкам. С Nginx (или другим прокси) перед вашим приложением вам не нужно беспокоиться об этом, и есть tools to help you securely configure it.

Смежные вопросы