【问题标题】:Node.JS, HAproxy and Socket.IO through NGINX, app sits in subdirectory通过 NGINX 的 Node.JS、HAproxy 和 Socket.IO,应用程序位于子目录中
【发布时间】:2012-06-18 05:29:05
【问题描述】:

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

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    我建议您查看以下链接:

    【讨论】:

    • 我想要这样做的原因是我可以让 3 个应用程序在端口 80 上运行,但可以从 unix 套接字代理它们。因此,如果有一种配置方法或类似的选项,我会全力以赴。不过谢谢!
    • 更新:我明白你的意思@YorkshireKev 有一个很好的例子,但你给了我一些资料。干杯!
    【解决方案2】:

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

    例如

    URL:80/app1 -> haproxy -> 节点 app1:8080

    URL:80/app2 -> haproxy -> 节点 app2:8081

    URL:80/app3 -> haproxy -> 节点 app3:8083

    更新:

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

    后端你好 服务器 hellosvr 127.0.0.1:20002 后端回声 服务器 echosvr 127.0.0.1:20001 前端 http_in 选项 httpclose option forwardfor except 127.0.0.1 # stunnel 已经添加了 header 绑定 *:80 acl rec_hello path_beg /hello/ use_backend hello if rec_hello acl rec_echo path_beg /echo 如果 rec_echo 使用_backend echo

    【讨论】:

    • 我想这样做!我该怎么做?!
    • 对不起@ThomasReggi 我不知道我怎么错过了你的评论。我想你要么已经想通了,要么现在继续前进......但为了未来的谷歌员工的利益,我将从 HAPROXY 配置中添加一个工作提取,该配置将 /echopage 和 /hello 路由到不同的资源。
    猜你喜欢
    • 1970-01-01
    • 2017-02-06
    • 2021-04-14
    • 2016-09-20
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-07-21
    • 1970-01-01
    相关资源
    最近更新 更多