Ich habe eine Site, die als Load Balancer funktioniert. Site A.
Ich habe andere Websites, die nur eine Domain haben können. Wenn ich also nur zu ihnen umleitung, heißt es, dass der Hostname nicht gefunden wurde.
Wenn ich also den Header manuell auf etwas setze, wird nur diese Site angezeigt.
Wie kann ich die proxy_set_header Host xxxx
gewählte Serveradresse einstellen ? Auf diese Weise hat jede Umleitungsanforderung einen anderen und geeigneten Host-Header.
Es ist kein Problem, wenn meine anderen 2 Websites basierend auf der URL und nicht auf dem Host-Header funktionieren könnten.
worker_processes 1;
error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;
error_log logs/error.log debug;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
upstream myapp1 {
#server localhost:3333;
server www.asd.com:80;
}
server {
listen 80;
location / {
proxy_set_header Host $upstream_addr; // should become somehow www.asd.com right now this code doesn't work
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://myapp1;
}
}
}
$server_addr
ist irgendwie 127.0.0.1 warum ??www.asd.com:80
ausgewählt wirdif(server1) than host = a;
,if(server2) than host = b;
Antworten:
Sie müssen den Header auf die eingehende Hostvariable setzen, wie hier dokumentiert :
quelle
This variable is equal to line Host in *the header of request* or name
Das heißt, je nachdem, was der Client / Browser sagt, wird dies ausgewählt.Antworten auf diese Frage erläutern dieses Verhalten und bieten Problemumgehungen .
Im Wesentlichen wird der Header lange vor der Auswahl des Upstreams fixiert. Wenn Sie nicht alle Upstreams auf einen einzelnen Host: -Header reagieren lassen können, müssen Sie den Upstream gleichzeitig mit dem Festlegen des Headers reparieren.
quelle