Hier ist das Problem:Nginx Proxy-Pass Konfiguration Docker
Der Host-Rechner hat mehrere Docker-Anwendungen auf verschiedenen Ports für z. App1 @ 3001, App2 @ 3002 ... 3100 etc
Jetzt würde ich die Apps in diesem Format http://hostname.com/app1 zugreifen möchte, http://hostname.com/app2 ..
Um dies zu tun, ich nginx auf dem Host-Proxy-Anfragen renne auf der rechten Seite-Anschluss auf der Unter uri basierend
location = /app1 {
proxy_redirect http://hostname:3001/;
include /etc/nginx/proxy_params;
}
location ^~ /app1 {
proxy_redirect http://hostname:3001/app1;
include /etc/nginx/proxy_params;
}
Aber das funktioniert nicht, wenn die Änderungen des Website Unter uri oder ob die Website umleitet. Zum Beispiel:
If I visit the site at hostname:3001 -> I can see the site
If I visit the site at http://hostname.com/app1 -> I can see the site
If the site page is at hostname:3001/static/index.html then when i access it as http://hostname.com/app1 the page changes to http://hostname.com/static/index.html -> I get 404.
Gibt es eine Möglichkeit, dies zu tun? Oder ist der einzige Weg dies zu tun, die DNS als app1.hostname.com zu setzen und ein namenbasiertes Routing durchzuführen?
Ihr Problem nicht auf Docker oder Nginx verwandt ist. Es ist ein generisches Problem der Reverseproxying mit geändertem Anwendungspfad: Ihre Anwendung erwartet, dass sie bei '/' dient, während Reverseproxy sie bei '/ app1' bedient. Ich bin sicher, dass Sie die Problembeschreibung und Problemumgehungen leicht finden können. –
Yup ich hatte diese lange Zeit zurück gefragt. Ich habe dies behoben, indem ich einen DNS-Eintrag für den Host erstellt habe, auf dem der Container läuft, und den Container-Port dem Host-Port zuordnen und dann eine einfache Konfiguration zu nginx map app1.abc.com hinzufügen: host: port in proxy pass. Es hat gut funktioniert und ist leicht zu skalieren. – NitishMD