2017-06-21 2 views
0

Ich versuche, Lack mit zwei Backends auszuführen, die genau Hostnamen benötigen. Aber mein Nginx erhält einen localhost Host-Header.Varnish host_header wird nicht zu Backends gesendet

Dies ist meine Konfiguration:

probe healthcheck { 
    .url = "/"; 
    .interval = 5s; 
    .timeout = 15s; 
    .window = 5; 
    .threshold = 3; 
} 

# Define the list of backends (web servers). 
# Port 443 Backend Servers for SSL 
backend bimer1 { 
    .host = "nginx-proxy"; 
    .host_header = "site1.example.com.br"; 
    .port = "80"; 
    .probe = healthcheck; 
} 

backend bimer2 { 
    .host = "nginx-proxy"; 
    .host_header = "site2.example.com.br"; 
    .port = "80"; 
    .probe = healthcheck; 
} 

Das ist mein nginx Zugriffsprotokoll:

Bi--Cache-nginx-ssl-proxy_1 | 172.17.0.3 - - [21/Jun/2017: 13: 41: 47 +0000] "POST /ws/Servicos/Geral/Localizacoes.svc/REST/LocalizarPessoas HTTP/1.1" 502 575 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537,36 (KHTML, wie Gecko) Chrom/59.0.3071.104 Safari/537,36" < ->localhost 172.17.0.1, 172.17.0.3

Es ist aussehen Set host_header Parameter Backend ist nicht Arbeiten auf regelmäßige Anfrage. Aber der Gesundheitscheck funktioniert gut.

Antwort

0

Varnish ist ein transparenter HTTP-Proxy. Es wird an das Backend weitergeleitet, was auch immer Host Header vom Client (Ihrem Browser) gesendet wurde. Also, wenn Sie es über http://localhost/ zugegriffen haben, dann localhost ist, was Ihr Backend in der Host Header sehen wird.

Darüber hinaus sollten Sie DNS-Namen in Varnish-Back-End-Definitionen meistens nie verwenden. Es sollte wie diese Stelle aussehen:

backend bimer1 { 
    .host = "1.2.3.4"; 
    # ... etc. 

Derzeit Ihre konfigurierten Backends lösen, um die gleiche Maschine nginx-Proxy. Auch das Ergebnis für access.log stammt nicht von Systemdiagnosen. (Die Gesundheits-Checks, die Sie konfiguriert haben Zugriff auf Root-URL zeigen würde /)

Vielleicht haben Sie mißverstanden Varnish Konfiguration. Wenn Ihr Plan darin besteht, mehrere Websites über denselben Computer zu bedienen, sollten Sie nur ein Back-End für alle verwenden. Mehrere Backends sind für mehrere Maschinen.

+0

Hallo @ daniel-v, ich nginx in derselben Maschine verwenden, da der Server (n) Hut I-Cache nur HTTPS-Verbindung akzeptiert müssen. Dann verwende ich NGINX als SSL-Proxy für diese Server. – ePhillipe

+0

Sie benötigen nur eine Backend-Definition in Ihrem Anwendungsfall. –