In naher Zukunft werde ich 3 Nginx-Server haben. Einer ist ein Reverse-Proxy für SSL für die beiden anderen. Also gehe ich zum Beispiel zu:
https://www.mysitename.com/site1
Die beiden anderen Server in diesem Beispiel sind Site1 und Site2. Ich habe das SSL-Zertifikat auf dem Proxy installiert und möchte einen Reverse-Proxy verwenden (SSL ist nicht erforderlich, da sich alle drei in einem internen Netzwerk befinden) Port 8081 ist eine Rails-App für Site1 und 8082 für Site2.
Ich habe das...
server {
listen 443;
server_name mysitename.com;
ssl on;
ssl_certificate ssl/mysitename.com.crt;
ssl_certificate_key ssl/mysitename.com.key;
keepalive_timeout 60;
location /site1 {
proxy_pass http://localhost:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http:// https://;
}
location /site2 {
proxy_pass http://localhost:8082;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_redirect http:// https://;
}
}
Wenn ich also www.meineSitenname.com/site1 besuche, möchte ich, dass es im Grunde das zurückgibt, was normalerweise von localhost kommt: 8081 (oder später eine interne IP für einen anderen Server).
Gibt es eine Möglichkeit, die "site1" aus dem localhost-Aufruf zu entfernen? Anscheinend wird localhost verwendet: 8081 / site1. Die Sites site1 und site2 haben die Art "/ login / index" oder "/ whatever / list" usw., ohne "site1".
Es gibt auch Umleitungen in den Site-Controllern (mit redirect_to), die von / login / index zu / whatever / list führen.
Muss ich die URLs der Site neu gestalten, um site1 zu verwenden? Oder kann der NGINX-Proxy es herausfinden?
Vielen Dank.
Antworten:
Zitieren von http://nginx.org/r/proxy_pass :
Das heißt, Sie müssen
proxy_pass
wie folgt verwenden :Beachten Sie das Nachstellen
/
in derproxy_pass
Direktive - es ersetzt einen Teil der ursprünglichen URI, die mit der Position übereinstimmt, d/site1/
. H.quelle