Dans un avenir proche, je vais avoir 3 serveurs nginx. L'un est un proxy inverse pour SSL pour les deux autres. Ainsi, par exemple, je vais à:
https://www.mysitename.com/site1
Les deux autres serveurs dans cet exemple sont site1 et site2. J'ai installé le certificat SSL sur le proxy et je veux utiliser un proxy inverse (SSL non requis car les 3 sont sur un réseau interne) .Pour les tests, je fais écouter nginx sur 443 pour SSL / proxy inverse, écoutez sur le port 8081, qui est une application de rails pour site1, et 8082, pour site2.
J'ai ceci...
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://;
}
}
Ainsi, lorsque je visite www.mysitename.com/site1, je veux qu'il renvoie essentiellement ce qui proviendrait normalement de localhost: 8081 (ou plus tard sur la ligne une adresse IP interne pour un autre serveur).
Existe-t-il un moyen de supprimer le "site1" de l'appel localhost? Ce qu'il semble faire, c'est utiliser localhost: 8081 / site1. Les sites site1 et site2 sont de la nature "/ login / index" ou "/ quel que soit / liste", etc, sans "site1".
Il y a aussi des redirections dans les contrôleurs de site (en utilisant redirect_to) qui vont de choses comme / login / index vers / quoique / liste.
Vais-je devoir reconcevoir les URL du site pour utiliser site1? Ou le proxy NGINX peut-il le comprendre?
Merci.
Réponses:
Citant http://nginx.org/r/proxy_pass :
Autrement dit, vous devez utiliser
proxy_pass
comme ceci:Notez la fin
/
de laproxy_pass
directive - elle remplacera une partie de l'URI d'origine correspondant à l'emplacement, c'est-à-dire/site1/
.la source