Ответ 1
Вот отличная статья по теме http://www.exratione.com/2012/07/proxying-websocket-traffic-for-nodejs-the-present-state-of-play/
Лично я играл с большим количеством конфигураций в этой области, и все сводится к тому, что вам нужно, и где вам нужно развернуть. Если вы находитесь на своем собственном оборудовании (или облачном срезе и т.д.), И вам нужно только поддерживать Node, тогда node -http-proxy на порту 80 очень мощный, надежный и позволяет использовать технологии, такие как websockets и ssl с небольшой головной болью.
Однако, если у вас есть другие сайты, которые вам нужно поддерживать, скажем, сайт Drupal или Grails, перед Nginx на 80 это более стандартная практика. С учетом этого нет причин, по которым Nginx не может подключиться к порту 8080 с node -http-proxy на 80 и прокси-трафике в соответствии с необходимым языком CGI. Это моя предпочтительная конфигурация и то, что я сейчас запускаю на производстве. До сих пор я очень доволен. Его быстрый, надежный, и я все еще могу поддерживать своих клиентов в создании сайтов в RapidWeaver рядом со своими собственными приложениями nodejs, использующими websockets и ssl.
Oh и балансировка нагрузки с помощью node -http-proxy - это кусок торта... проверьте этот простой пример Round-Robin https://github.com/nodejitsu/node-http-proxy/blob/master/examples/balancer/simple-balancer.js
Edit:
Я обнаружил, что запуск node -http-proxy на порту 80 - это плохая практика, потому что для пользователя root требуется выполнить node. Вместо этого используйте IP-таблицы для перенаправления порта 80 в не-привилегированный порт, где выполняется ваш node -http-proxy. Еще лучше настроить лак на 80 (потому что, как говорится в статье, у любого серьезного веб-приложения должен быть HTTP-ускоритель перед ним) и перенаправляет запросы на node -http-proxy на непривилегированный порт. Отсюда, как вы хотите разделить трафик между серверами node и nginx.
Второе редактирование:
Nginx теперь поддерживает websockets! И хотя текущее состояние node вполне способно доставить полный стек, это не значит, что он должен. Я имею в виду, что технически вы могли бы использовать ручку отвертки, чтобы вбить гвоздь в стену... но почему бы вам, если у вас есть молоток, сидящий прямо здесь? От обслуживания статики до комплексной балансировки нагрузки Nginx тестируется и развертывается в некоторых из самых передовых сетей. Теперь нет необходимости в поддержке websocket.