Num futuro próximo, terei 3 servidores nginx. Um é um proxy reverso para SSL para os outros dois. Então, por exemplo, eu vou para:
https://www.mysitename.com/site1
Os outros dois servidores neste exemplo são site1 e site2. Instalei o certificado SSL no proxy e quero usar um proxy reverso (o SSL não é obrigatório, pois todos os 3 estão em uma rede interna). porta 8081, que é um aplicativo de trilhos para o site1 e 8082, é para o site2.
Eu tenho isto...
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://;
}
}
Portanto, quando visito www.mysitename.com/site1, quero que ele retorne basicamente o que normalmente viria do localhost: 8081 (ou posteriormente, um IP interno para outro servidor).
Existe uma maneira de remover o "site1" da chamada localhost? O que parece estar fazendo é usar o localhost: 8081 / site1. Os sites site1 e site2 são da natureza "/ login / index" ou "/ tanto faz / lista" etc., sem "site1".
Também existem redirecionamentos nos controladores do site (usando redirect_to) que vão de coisas como / login / index para / qualquer que seja / list.
Vou ter que redesenhar os URLs do site para usar o site1? Ou o proxy NGINX pode descobrir isso?
Obrigado.
Respostas:
Citando http://nginx.org/r/proxy_pass :
Ou seja, você deve usar
proxy_pass
assim:Observe o final
/
daproxy_pass
diretiva - ele substituirá parte do URI original correspondente ao local, ou seja/site1/
.fonte