Übermitteln Sie den gesamten Datenverkehr ohne Übereinstimmung mit den Domänennamen in Haproxy

922
charith

Ich verwende Haproxy in meinem VPS, um Videoinhalte zu streamen. Bei meinem aktuellen Setup muss ich jede Domäne im Front-End- und Back-End-Abschnitt in meiner Haproxy.conf-Datei erwähnen. Wenn ich 10 Kanäle ansehen muss, muss ich viele Domains hinzufügen. Ich verwende diesen Proxy nur für bestimmte Streaming-Sites und nicht für den gesamten Web-Traffic. Ich habe Dnsmasq auf meinem openwrt-Router installiert und kann nur notwendige Domänen auf meine VPS verweisen. Ich muss Eintrag nur für dnsmasq hinzufügen und ich brauche Haproxy, um all die Dinge zu proxy, die dnsmasq es wirft. Kann ich in der Haproxy-Konfiguration so etwas wie Platzhalter konfigurieren? oder gibt es andere Methoden?

Meine haproxy.conf gefällt mir

# Frontend for connections over port 80/http frontend f_sni_catchall  mode http bind 0.0.0.0:80 log global option httplog option accept-invalid-http-request capture request header Host len 50 capture request header User-Agent len 150  use_backend b_sni_catchall if { hdr(host) -i www.example.com }  default_backend b_deadend  # Backend for handling connections over port 80/http backend b_sni_catchall  log global mode http option httplog option http-server-close   server www.example.com www.example.com:80 check inter 10s fastinter 2s downinter 2s fall 1800 

Anstelle von www.example.com muss ich so etwas mit dem Platzhalter verwenden

use_backend b_sni_catchall if { hdr(host) -i *.com }  server*e.com *.com:80 check inter 10s fastinter 2s downinter 2s fall 1800 

Die Verwendung vollständiger Domänen in der Konfigurationsdatei ist aufgrund von DNS-Problemen nicht möglich. Haproxy beginnt nicht mit einigen Domainnamen. Ansonsten muss ich das DNS-Zeigen mit dnsmasq oder Bind einstellen. Dafür muss ich haproxy so konfigurieren, dass alle Domänen weitergeleitet werden, die es vom Benutzer erhält

1
Bitte posten Sie den entsprechenden Block von Ihrer Haproxy-Konfig- und -Haproxy-Version. Jim G. vor 7 Jahren 0
@ JimG. Bitte überprüfen Sie, ob ich meine Frage mit der Haproxy-Conf-Datei aktualisiert habe charith vor 7 Jahren 0

1 Antwort auf die Frage

1
Tobias Hagenbeek

Wie bereits erwähnt, müssen wir Ihre Version unbedingt kennen, da das Konfigurationsformat zwischen den Versionen geändert wurde. Wie ich es jedoch mache (1.6.3)

frontend web bind *:80 name http  ### Wildcard ACL ### acl is_wild hdr_dom(host) -i wild  ### Wildcard Backend### use_backend wild if is_wild   backend wild cookie WILD_HTTP insert server wild 10.1.1.1:80 cookie A check 

Wie Sie sehen, wird kein * benötigt. Alles, was übereinstimmt (z. B. wild.mydomain.com, mydomain.wild.com, something.mewild.com), wird an diesen ACL gesendet und verwendet dann das gewünschte Backend-Mapping.