No Nginx, tentamos redirecionar um URL da seguinte maneira:
http://example.com/some/path -> http://192.168.1.24
onde o usuário ainda vê o URL original no navegador. Depois que o usuário é redirecionado, digamos que ele clica no link /section/index.html
, gostaríamos de fazer uma solicitação que leve ao redirecionamento
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
e novamente preservar o URL original.
Nossas tentativas envolveram várias soluções usando proxies e regras de reescrita, e abaixo mostra a configuração que nos aproximou de uma solução (observe que esta é a configuração do servidor da example.com
web para o servidor da web). No entanto, ainda existem dois problemas com isso:
- Ele não executa a reescrita corretamente, na medida em que a URL de solicitação recebida pelo servidor da Web
http://192.168.1.24
inclui/some/path
e, portanto, falha ao veicular a página necessária. Quando você passa o mouse em um link depois que uma página é veiculada,
/some/path
falta o URLserver { listen 80; server_name www.example.com; location /some/path/ { proxy_pass http://192.168.1.24; proxy_redirect http://www.example.com/some/path http://192.168.1.24; proxy_set_header Host $host; } location / { index index.html; root /var/www/example.com/htdocs; } }
Estamos procurando uma solução que envolva apenas a alteração da configuração do servidor da web example.com
. Podemos alterar a configuração 192.168.1.24
(também Nginx), no entanto, queremos tentar evitar isso porque precisaremos repetir essa configuração para centenas de servidores diferentes cujo acesso é feito através de proxy example.com
.