Node.JS,HAproxy和Socket.IO通过NGINX,app位于子目录中

时间:2012-06-15 06:32:04

标签: node.js nginx socket.io subdirectory haproxy

我已经尝试了几个小时,已经阅读了这个网站和互联网提供的内容。我似乎无法让Socket.IO在这里正常工作。我知道nginx默认不能处理Socket.IO但是,HAproxy可以。我希望nginx通过unix套接字为Node应用程序服务,效果很好。每个都有一个由nginx设置的子目录位置,但是,现在我需要Socket.IO用于最后一个应用程序,此时我正在失去配置。

我有最新的socket.io,HAproxy 1.4.8和nginx 1.2.1。运行ubuntu。

重申一点,我需要让socket.io通过nginx工作到子目录中的节点app,例如:localhost / app /。

Diagram:
WEB => HAproxy => Nginx => {/app1 app1, /app2 app2, /app3 app3}

如果我能提供其他任何东西,现在就告诉我!

2 个答案:

答案 0 :(得分:0)

没有理由得到“通过nginx获取socket.io”。相反,您只需将HAProxy直接路由到Socket.IO(中间没有Nginx)。

我建议您查看以下链接:

答案 1 :(得分:0)

您可以在端口80上使用Haproxy来运行在不同端口上运行的多个node.js应用。

E.g。

网址:80 / app1 - > haproxy - >节点app1:8080

网址:80 / app2 - > haproxy - >节点app2:8081

网址:80 / app3 - > haproxy - >节点app3:8083

更新:

以下是一个示例HAPROXY配置,用于将发送到http://server:80/hello的请求路由到localhost:20001http://server:80/echolocalhost:20002

backend hello
    server hellosvr 127.0.0.1:20002

backend echo
    server echosvr 127.0.0.1:20001

frontend http_in
    option httpclose
    option forwardfor except 127.0.0.1  # stunnel already adds the header
    bind *:80
    acl rec_hello path_beg /hello/
    use_backend hello if rec_hello
    acl rec_echo path_beg /echo
    use_backend echo if rec_echo