HAProxy 正在缓存转发吗?

HAProxy 正在缓存转发吗?

我正在尝试使用 socket.io 在 Node.js 中构建的应用程序设置服务器结构。

我的设置是:

HAProxy 前端转发至

     -> apache2 as default backend (or nginx, is apache in this local test)

     -> node.js app if the url has socket.io in the request AND a domain name

我有类似的东西:

  global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    maxconn 4096
    user haproxy
    group haproxy
    daemon

  defaults
    log     global
    mode    http
    maxconn 2000
    contimeout      5000
    clitimeout      50000
    srvtimeout      50000


frontend all 0.0.0.0:80
timeout client 5000
default_backend www_backend

acl is_soio url_dom(host) -i socket.io #if the request contains socket.io

acl is_chat hdr_dom(host) -i chaturl #if the request comes from chaturl.com

use_backend chat_backend if is_chat is_soio

backend www_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout server 5000
timeout connect 4000
server server1 localhost:6060 weight 1 maxconn 1024 check #forwards to apache2

backend chat_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout queue 50000
timeout server 50000
timeout connect 50000
server server1 localhost:5558 weight 1 maxconn 1024 check #forward to node.js app

问题在于,当我向 www.chaturl.com/index.html 之类的网站发出请求时,它加载正常,但无法加载 socket.io 文件 (www.chaturl.com/socket.io/socket.io.js),为什么它会重定向到 apache(应该重定向到提供文件的 node.js 应用程序)。奇怪的是,如果我直接访问 socket.io 文件,刷新几次后,它就会加载,所以我想当客户端发出第一个请求并到达 apache 服务器时,它会“缓存”转发。

关于如何解决这个问题有什么建议吗?或者我可以尝试或查看什么?

答案1

您的配置中缺少“选项 http-server-close”。添加它,您的问题就会消失。

相关内容