0

为了测试所有可能的解决方案以使 Socket.io 与并行 Apache 安装一起工作,我现在安装了监听端口 80 的 HAproxy。它将所有内容代理到 Apache,除非主机名等于io.server.com.

我们有两个 IP 连接到我们的服务器:一个用于 SSL,另一个用于我们拥有的所有非 SSL 子域。我创建了io.server.com指向该非 SSL IP 地址的子域。但是,会发生以下情况:

  1. 访问regular_http.server.com导致 Apache 处理该子域(OK)
  2. 访问io.server.com结果“Welcome to Socket.io”(OK)
  3. 下次访问regular_http.example.com结果“欢迎使用 Socket.io”

为什么 HAproxy 从未配置为转到 Socket.io 的子域向 Socket.io 发送请求?是的,两个子域共享IP,但是HAproxy真的代理了一个下的整个IP吗?那么基于主机名设置 ACL 有什么意义呢?

这是我的配置:

global
    daemon
    maxconn 4096
    user haproxy
    group haproxy

defaults
    log global

#this frontend interface receives the incoming http requests
frontend http-in
    mode http
    bind *:80
    timeout client 86400000
    #default behavior sends the requests to apache
    default_backend www_backend
    #when "io.test.tld" is matched, an acl I call arbitrarily
    # "websocket" triggers
    acl websocket hdr_end(host) -i io.server.com
    use_backend node_backend if websocket

谢谢!

4

1 回答 1

1

option http-server-close使用HAproxy中的配置值解决了这个问题。

于 2013-02-21T07:41:46.937 回答