Nginx-Reverse-Proxy führt zu einer Umleitungsschleife

Nginx-Reverse-Proxy führt zu einer Umleitungsschleife

Ich habe einen Load Balancer (Nginx) und einen weiteren Apache-Server, der ein WordPress-Blog hostet (unter /blog). Ich möchte, dass der gesamte Datenverkehr auf meinem Load Balancer unter /blogan diesen Apache-Server geleitet wird. Ich habe die folgenden Einstellungen:

upstream main_app  {
  server main_app_address;
}

upstream blog {
  server blog_address;
}

server {
   server_name appname.com;
   return 301 http://www.appname.com$request_uri permanent;
}

server {
  listen 80;
  server_name appname.com;

  location / {
    client_max_body_size 8M;
    proxy_pass  http://main_app;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
  }

  location /blog {
    proxy_pass http://blog/;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Scheme $scheme;
  }

}

Dadurch wird mir die Verzeichnisliste auf dem Apache-Server angezeigt, /wo ich das sehen kann. /blogDas ist jedoch nicht, was ich will, ich möchte, dass der Inhalt /blogvom Apache-Server angezeigt wird.

Wenn ich den abschließenden Schrägstrich in der /blog-Standortdirektive entferne, erhalte ich endlose Weiterleitungen.

Wie löse ich das?

Antwort1

Sie können dies lösen, indem Sie Folgendes ersetzen:

proxy_pass http://blog/;

mit

proxy_pass http://blog;

Bitte lesen Sie die Dokumentation:http://nginx.org/r/proxy_pass

Antwort2

Ich hatte ein ähnliches Problem und es wurde gelöst, als ich es auskommentierteproxy_set_header Host $host;

verwandte Informationen