
Ich habe eine Site mit einigen URLs unter (http://Standort:Hafen/) und möchten NGINX als Proxy verwenden.
Ich habe eine andere Site unter (http://Standort2:Port2) und möchte es auch so proxyen, dass.
- Der Zugriff auf Site 1 erfolgt über
http://main.com
und - Der Zugriff auf Site 2 erfolgt über
http://main.com/site2
mit allen Unterlinks
Mein Versuch schlägt fehl.
server {
listen 80;
index index.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://landing-page:5000;
proxy_redirect off;
}
location /insights {
return 302 $uri/;
}
location /insights/ {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
rewrite ^/insights/?(.*) /$1 break;
proxy_pass http://ghost:2368/;
# proxy_redirect off;
}
}
Zusätzliche Information
Ich verwende NGINX auf Docker und muss auf meinem Mac Port 80 auf 8080 zuordnen.
Ich habe Folgendes gefunden:
http://localhost:8080/insights
setzt die URLhttp://localhost/insights/
im Browserhttp://localhost:8080/insights/ghost
setzt URL aufhttp://localhost:8080/ghost/
http://localhost:8080/insights/
setzt URL aufhttp://localhost:8080/insights/
http://localhost:8080/insights/ghost/
setzt URL aufhttp://localhost:8080/insights/ghost/
JEDE URL mit dem abschließenden Schrägstrich scheint gut zu funktionieren. Warum?
Antwort1
Ihr location /
Block sollte am Ende der Datei stehen. Standortblöcke werden der Reihe nach verarbeitet und der erste passende Block wird ausgeführt. Da er mit location /
jeder Anfrage übereinstimmt, wird er immer ausgeführt.
Im Allgemeinen sollten Sie zuerst Ihre spezifischsten Blöcke haben, gefolgt von Ihren weniger spezifischen Blöcken und abschließend location /
für alle anderen Anfragen.
Ihre Datei sollte folgendermaßen aufgebaut sein:
server {
listen 80;
index index.html;
location /insights/ {
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# proxy_set_header Host $http_host;
# proxy_set_header X-NginX-Proxy true;
rewrite ^/insights/?(.*) /$1 break;
proxy_pass http://ghost:2368/;
# proxy_redirect off;
}
location /insights {
return 302 $uri/;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://landing-page:5000;
proxy_redirect off;
}
}