nginx hinter haproxy - Seiten werden unabhängig von der übermittelten Domain zufällig geladen

nginx hinter haproxy - Seiten werden unabhängig von der übermittelten Domain zufällig geladen

Ich habe derzeit einen Webserver (10.0.0.77), auf dem Nginx mit mehreren virtuellen Hosts (ein paar WordPress-Sites und eine Nextcloud-Installation) läuft, die alle auf einer IP-Adresse laufen und alles ist mit einem Wildcard-Zertifikat gesichert. Das funktioniert gut – sowohl intern als auch extern

Jetzt möchte ich den gesamten externen Datenverkehr über HAproxy weiterleiten. Unten ist meine vereinfachte Haproxy-Konfiguration für eine WordPress-Site und Nextcloud:

global
log /dev/log    local0
log /dev/log    local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
stats timeout 30s
maxconn 4096
user haproxy
group haproxy
daemon


defaults
log     global
mode    tcp
option  tcplog
option  dontlognull
timeout connect 15s
timeout client  15s
timeout server  15s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http


frontend localhost80  
bind *:80
mode http
redirect scheme https code 301 if !{ ssl_fc }

frontend localhost443   
bind *:443
option tcplog
mode tcp
acl tls req.ssl_hello_type 1
tcp-request inspect-delay 5s
tcp-request content accept if tls

acl is_wordpress req.ssl_sni -i nextcloud.domain.com   
acl is_nextcloud req.ssl_sni -i wordpress.domain.com  

use_backend nextcloud_cluster if is_nextcloud  
use_backend wordpress_cluster if is_wordpress

backend wordpress_cluster
mode tcp
option ssl-hello-chk
server is_wordpress 10.0.0.77:443 check 


backend nextcloud_cluster
mode tcp
option ssl-hello-chk
server is_nextcloud 10.0.0.77:443 check

Das Problem besteht darin, dass ich, sobald ich den externen Datenverkehr so ​​umleite, dass er über meinen Haproxy läuft, beim Versuch, z. B. nextcloud.domain.com zu laden, manchmal wordpress.domain.com erhalte und umgekehrt.

Irgendwelche Ideen, was ich falsch mache?

Antwort1

Wenn Sie SNI zur Unterscheidung zwischen Backends verwenden, sollten Sie sich darüber im Klaren sein, dass in diesem speziellen Fall die Nicht-SNI-Clients nicht auf die Sites zugreifen können.

Wenn dies jedoch für Ihre Kunden kein Problem darstellt und Sie immer noch auf dasselbe Backend ausgleichen (wie im Beispiel), verfügen Sie in Ihrer Konfiguration immer noch über redundante Informationen. Der einfachere Ansatz wäre hier:

frontend localhost443   
  bind *:443
  option tcplog
  mode tcp
  default_backend backend1

backend backend1
  mode tcp
  option ssl-hello-chk
  server server1 10.0.0.77:443 check 

Da es sich bei deinem Setup lediglich um einen Layer-4-Balancing handelt und du trotzdem noch zufällige Websites erhältst, müsstest du dir den Webserver, der unter 10.0.0.77:443 läuft, etwas genauer ansehen: Welcher Webserver, wie ist er eingerichtet, tritt bei direktem Zugriff das gleiche Problem auf?

verwandte Informationen