HAProxy SSL Redirect для HTTP, но не для WebSockets

У меня есть HAProxy в качестве балансировщика нагрузки и динамического перенаправления на мой веб-сервер и сервер веб-сокетов, чтобы они могли работать через один и тот же порт. Мой сервер веб-сокетов требует SSL-проверки на прокси-сервере.

Я хочу настроить HAProxy таким образом, чтобы трафик http перенаправлялся на https, но веб-сокеты работают на бот-портах 80 и 443 (ws и wss). Это возможно?

Мой текущий конфиг:

global
 maxconn 50000
 user root
 group root
 stats socket /tmp/haproxy
 node lb1
 nbproc 1
 #daemon
 #debug

defaults
 log global
 retries 3
 option dontlog-normal
 timeout connect 10000ms
 timeout client 10000ms
 timeout server 10000ms
 timeout tunnel 24h
 maxconn 50000
 mode http
 option http-server-close


backend wwwServers
 mode http
 balance roundrobin
 option httpchk HEAD / HTTP/1.1
 server www1 127.0.0.1:1138 check

backend wsServers
 server ws1 127.0.0.1:1137 check

frontend  secured
 bind :443 ssl crt /cert/cert.pem
 reqadd X-Forwarded-Proto:\ https
 default_backend wwwServers

frontend unsecured
 bind :80
 acl is_websocket hdr(Upgrade) -i WebSocket
 use_backend wsServers if is_websocket
 redirect scheme https if !{ ssl_fc }
 default_backend wwwServers

но это перенаправляет соединение websocket перед обновлением, потому что прокси-сервер делает следующее, когда я его запускаю: правило 'redirect', помещенное после правила 'use_backend', все равно будет обрабатываться раньше.

Любая помощь будет оценена.

Спасибо,

1 ответ

Решение

Решение было следующим:

frontend secured bind :443 ssl crt /path/to/certificate.pem reqadd X-Forwarded-Proto:\ https acl is_websocket hdr(Upgrade) -i WebSocket use_backend wsServers if is_websocket default_backend wwwServers frontend unsecured bind :81,:80 acl is_websocket hdr(Upgrade) -i WebSocket redirect scheme https if !{ ssl_fc } !is_websocket use_backend wsServers if is_websocket default_backend wwwServers

если установлено соединение не через ssl, а через websocket, оно перенаправляется.

Другие вопросы по тегам