Apache-2.2
HAProxy 正在記憶體轉發?
我正在嘗試為我在 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”。添加它,您的問題就會消失。