Apache-2.2

HAProxy 正在記憶體轉發?

  • November 24, 2012

我正在嘗試為我在 Node.js 中使用 socket.io 建構的應用程序設置伺服器結構。

我的設置是:

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 伺服器時“記憶體”客戶端的轉發。

關於如何解決這個問題的任何建議?或者我可以嘗試或看看這個?

您的配置中缺少“選項 http-server-close”。添加它,您的問題就會消失。

引用自:https://serverfault.com/questions/451690