我有两个问题
问题1
使用Apache作为我的nodeJS服务器的代理是不对的,因为它无法处理Websockets。我目前正在使用Apache与BOSH,我想知道使用节点部署的正确方法是什么,以便我也可以使用websockets。
我的apache配置如下
ServerName example.com
ProxyPass / http://localhost:9000/
ProxyPassReverse / http//localhost:9000/
Order allow,deny
Allow from all
这种做法完全错了吗?我可以毫无困难地使用我的应用程序(作为API工作)。我需要尽快添加websocket支持,然后这个配置会失败吗?
问题2
我还想知道如何让NodeJS将日志写入文件。
答案 0 :(得分:2)
实际上,疯狂的科学家们让node-http-proxy确保人们不会使用Apache或Nginx作为NodeJS的代理。如果你问我,我会说使用模块,更容易,更轻,更快(不太确定,但节点!)。
在记录日志时,我建议使用Winston module,这很容易使用。
答案 1 :(得分:2)
1)使用像Apache这样的东西代理Node.js是错误的,最好使用像Nginx这样的东西或像node-proxy或bouncy这样的Node解决方案。这是错误的,因为Apache阻塞并为每个连接创建一个新线程,与Nginx和Node完全不同。通过使用Apache,您将消除Node.js为您提供的优势(数千个并发连接和低内存占用)。
2)据我所知,最受欢迎的日志库可能是Winston。
答案 2 :(得分:1)
使用新版本的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