W najbliższej przyszłości będę miał 3 serwery Nginx. Jeden jest odwrotnym proxy dla SSL dla dwóch pozostałych. Idę na przykład do:
https://www.mysitename.com/site1
Dwa pozostałe serwery w tym przykładzie to site1 i site2. Zainstalowałem certyfikat SSL na proxy i chcę użyć zwrotnego proxy (SSL nie jest wymagany, ponieważ wszystkie 3 są w sieci wewnętrznej). Dla celów testowych mam Nginx nasłuchujący na 443 dla SSL / reverse-proxy, słuchaj dalej port 8081, który jest aplikacją railsową dla strony 1, a 8082 jest dla strony 2.
Mam to...
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://;
}
}
Więc kiedy odwiedzam www.mysitename.com/site1, chcę, aby w zasadzie zwrócił to, co normalnie pochodzi z localhost: 8081 (lub później wewnętrzny adres IP innego serwera).
Czy istnieje sposób, aby usunąć „site1” z wywołania localhost? Wydaje się, że robi to za pomocą localhost: 8081 / site1. Witryny site1 i site2 mają charakter „/ login / index” lub „/okolwiek / lista” itd., Bez „site1”.
Istnieją również przekierowania w kontrolerach strony (za pomocą redirect_to), które przechodzą z takich rzeczy jak / login / index do / what / list.
Czy będę musiał przeprojektować adresy URL witryny, aby korzystać z witryny 1? Czy może proxy NGINX to rozgryza?
Dzięki.
Odpowiedzi:
Cytując http://nginx.org/r/proxy_pass :
Oznacza to, że musisz użyć w
proxy_pass
ten sposób:Zwróć uwagę na końcowe
/
wproxy_pass
dyrektywie - zastąpi ona część oryginalnego identyfikatora URI dopasowanego przez lokalizację, tj/site1/
.źródło