Развертывание NodeJS с Apache Proxy на Ec2 (неправильно?) И ведение журнала - PullRequest
0 голосов
/ 23 ноября 2011

У меня есть вопрос из двух частей

Вопрос 1

Неправильно ли использовать Apache в качестве прокси для моего сервера nodeJS, поскольку он не может обрабатывать веб-сокеты. В настоящее время я использую Apache с BOSH, и я хотел бы знать, как правильно развернуть узел, чтобы я тоже мог использовать веб-сокеты.

Мои настройки apache следующие



   ServerName example.com
   ProxyPass / http://localhost:9000/
   ProxyPassReverse /  http//localhost:9000/
  
        Order allow,deny
        Allow from all
  


Является ли этот подход совершенно неправильным? Я могу без проблем использовать свое приложение (которое работает как API). Мне нужно было бы добавить поддержку websocket в ближайшее время, и эта конфигурация потерпит неудачу тогда?

Вопрос 2
Я также хотел бы знать, как заставить NodeJS записывать логи в файл.

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011

1) Неправильно использовать что-то вроде Apache для прокси Node.js, лучше использовать что-то вроде Nginx или Node, например node-proxy или bouncy.Это неправильно, потому что Apache блокирует и создает новый поток для каждого соединения, полностью отличающийся от Nginx и Node.Используя Apache, вы устраните преимущества, которые предоставляет Node.js (тысячи одновременных подключений и низкий объем занимаемой памяти).

2) Насколько я знаю, вероятно, самая «популярная» библиотека журналов - это Winston .

2 голосов
/ 23 ноября 2011

Ну, на самом деле безумные ученые создали node-http-proxy , чтобы люди не использовали Apache или Nginx в качестве прокси для NodeJS.Если вы спросите меня, я бы сказал, использовать модуль, гораздо проще, легче и быстрее (не уверен, но это узел!).

На момент регистрации я бы рекомендовал использовать модуль Winston , которыйдовольно прост в использовании.

1 голос
/ 21 марта 2014

В новой версии Apache (2.4.5+) вы можете использовать mod_proxy_wstunnel для достижения этой цели.

Недавно я провел простой эксперимент.Похоже, что он прекрасно работает с комбинацией Apache, Nodejs и socket.io.

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so

ProxyPass /socket.io/1/websocket/ ws://127.0.0.1:8899/socket.io/1/websocket/
ProxyPass /socket.io/ http://127.0.0.1:8899/socket.io/

Подробности: https://github.com/mksamfolk/sandbox/tree/master/apache_websocket

...