Nginx ändert Header abhängig vom Upstream-Server

Nginx ändert Header abhängig vom Upstream-Server

Ich habe einen Nginx-Proxy und 2 Upstream-Server (Haupt-Upstream-Server und Backup-Upstream-Server) in meiner Umgebung. Das Ziel besteht darin, „proxy_set_header Host X/Y“ zu ändern, je nachdem, welcher Upstream ausgewählt wurde.

Im Moment habe ich nur eine Idee: eine weitere Nginx-Instanz zu erstellen und alle Anfragen von meinem Proxy an diese Instanz zu senden, den Header neu zu schreiben und die Anfrage weiterzuleiten.

Kennt jemand eine bequemere Lösung?

Hier ist meine vereinfachte Konfiguration:

http {
access_log  /var/log/nginx/access.log  main;

sendfile            on;
tcp_nopush          on;
tcp_nodelay         on;
keepalive_timeout   65;
types_hash_max_size 2048;

include             /etc/nginx/mime.types;
default_type        application/octet-stream;

include /etc/nginx/conf.d/*.conf;

upstream images {
   server backend.test.com:8080 ;
   server backend-backup.test.com:8090 backup;
 }

server {
    listen       80 default_server;
    server_name  images-test.test.com;
    root         /usr/share/nginx/html;

    include /etc/nginx/default.d/*.conf;
 
    add_header                          Last-Modified "";
    add_header                          Pragma "public";
    add_header                          Access-Control-Allow-Origin $http_origin;

    error_page 404 /404.html;
    location = /404.html {}

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {}


    location / {
  # some not related to the question lines deleted
          proxy_set_header Host "backend.test.com";
          proxy_pass http://images;
        }
}

}

verwandte Informationen