System > Sieć
Błędne przekierowania w haproxy [CentOS 8]
(1/1)
BrejSki:
Witam,
Niedawno zacząłem składać system na domowych serwerach, które przez OpenVPN (split tunelling) są połączone z VPSem z publicznym IP. Każda maszyna wirtualna na serwerze ma swój IP w VPNie. Kierowaniem ruchu zajmuje się haproxy i tu jest problem - wszystkie przekierowania po HTTP odbywają się poprawnie, subdomena/domena jest odpowiednio kierowana na wskazany w konfiguracji adres IP w VPNie, ale gdy używam innego protokołu (w tym przypadku jest to PPP), to przekierowanie idzie mimo konfiguracji na domenę główną - zamiast kierować się na chat.domain.com, kieruje się na domain.com...
Aplikacją uzywającą PPP jest Rocket.Chat i przekierowanie jest zrobione jako Port 443 do portu 3000, na którym natywnie działa Rocket.
Poniżej umieszczam fragment konfiguracji przedstawiający frontent i backend, który jest sprawny, za wyjątkiem "chat". Steldev to główna domena i próbuję zrozumieć, dlaczego chat (chat.domain.com) kieruje bezpośrednio na backend steldev (domain.com).
System operacyjny na serwerze to CentOS 8.3.
--- Kod: ---
frontend https--in
bind 0.0.0.0:443 ssl crt /etc/cert/
mode http
option httplog
use_backend vm if { hdr_dom(host) -i vm.domain.com} { dst_port 443 }
use_backend vm if { hdr_dom(host) -i www.vm.domain.com } { dst_port 443 }
use_backend steldev if { hdr_dom(host) -i www.domain.com } { dst_port 443 }
use_backend steldev if { hdr_dom(host) -i domain.com } { dst_port 443 }
use_backend chat if { hdr_dom(host) -i chat.domain.com } { dst_port 443 }
use_backend adsb if { hdr_dom(host) -i adsb.domain.com } { dst_port 443 }
use_backend monitoring if { hdr_dom(host) -i monitoring.domain.com } { dst_port 443 }
use_backend chat if { hdr_dom(host) -i chat.domain.com } { dst_port 443 }
backend vm
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.2:80 cookie A check
backend monitoring
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.7:80 cookie A check
backend steldev
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.4:80 cookie A check
backend chat
balance roundrobin
server node1 10.11.12.5:3000 check
backend adsb
balance leastconn
option httpclose
cookie JSESSIONID prefix
server node1 10.11.12.3:88 cookie A check
--- Koniec kodu ---
Może widzi ktoś tu błąd? Zaznaczę, że dopiero uczę się pracy z haproxy. A może powinienem dodać dodatkowy frontend pod TCP albo coś? Pomysły mi się skończyły.
Paweł Kraszewski:
* Możesz rozwinąć użycie PPP, bo ostatnio to widziałem, jak się modemem analogowym łączyłem?
* Chat w konfigu występuje dwa razy (zduplikowny wpis)
* W niektórych programach (nie znam haproxy) "goła" domena (domain.com) działa jako catch-all, nie dopuszczając do głosu kolejnych reguł.
BrejSki:
Nie jestem do końca pewien czy to PPP, zmylił mnie chyba nmap i port 3000, na którym słucha node. Poprawiłem konfig, chat pojawia się tylko raz teraz.
Haproxy dopuszcza inne reguły, ponieważ wszystkie, poza tą jedną działają poprawnie.
Nawigacja
Idź do wersji pełnej