Я пытаюсь перенаправить все запросы, содержащие каталог пути /socket.io/, на отдельный порт с HAProxy.
Вот мой файл конфигурации:
global
maxconn 4096 # Total Max Connections. This is dependent on ulimit
nbproc 2
defaults
mode http
frontend all 0.0.0.0:80
timeout client 86400000
default_backend web_servers
acl is_stream path_dir socket.io
use_backend stream_servers if is_stream
backend web_servers
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server web1 127.0.0.1:4000 weight 1 maxconn 1024 check
backend stream_servers
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server stream1 127.0.0.1:5100 weight 1 maxconn 1024 check
Пути URL с /socket.io/ правильно направляются на порт 5100 в Chrome и Safari. Однако не для firefox.
Я запускаю Haproxy локально на своем Mac для разработчиков, не уверен, имеет ли это какое-либо отношение к этому.
Я использую haproxy 1.4.8 и Firefox 3.6.15.
Я пробовал очистить кеш в firefox, и это не помогло, поэтому я думаю, что что-то не так с тем, как HAProxy анализирует заголовки запросов Firefox.
Скорее всего, это просто потому, что с этим конфигом анализируется только первый запрос соединения, а остальные просто туннелируются на сервер. Включение журналов покажет это. Просто добавьте "option http-server-close" в раздел настроек по умолчанию, и он должен работать. А также, пожалуйста, удалите "nbproc 2". Это только усложняет отладку и ничего вам не принесет.