No Nginx, tentamos redirecionar uma URL da seguinte forma:
http://example.com/some/path -> http://192.168.1.24
onde o usuário ainda vê o URL original em seu navegador. Depois que o usuário for redirecionado, digamos que ele clique no link para /section/index.html
, gostaríamos que isso fizesse uma solicitação que levasse ao redirecionamento
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
e novamente ainda preservar a 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 web para o example.com
servidor web). No entanto, ainda existem dois problemas com isso:
- Ele não executa a reescrita corretamente, pois a URL de solicitação recebida pelo servidor da Web
http://192.168.1.24
inclui/some/path
e, portanto, não atende à página necessária. Quando você passa o mouse em um link depois que uma página é veiculada,
/some/path
está faltando no 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 alterar a configuração do servidor web no example.com
. Podemos alterar a configuração 192.168.1.24
(também Nginx), mas queremos tentar evitar isso porque precisaremos repetir essa configuração para centenas de servidores diferentes cujo acesso é feito por proxy example.com
.