En Nginx hemos estado intentando redirigir una URL de la siguiente manera:
http://example.com/some/path -> http://192.168.1.24
donde el usuario todavía ve la URL original en su navegador. Una vez que se redirige al usuario, digamos que hace clic en el enlace /section/index.html
, nos gustaría que esto haga una solicitud que conduzca a la redirección
http://example.com/some/path/section/index.html -> http://192.168.1.24/section/index.html
y nuevamente conserva la URL original.
Nuestros intentos han involucrado varias soluciones usando proxies y reglas de reescritura, y a continuación se muestra la configuración que nos ha acercado más a una solución (tenga en cuenta que esta es la configuración del servidor web para el example.com
servidor web). Sin embargo, todavía hay dos problemas con esto:
- No realiza la reescritura correctamente, ya que la URL de solicitud recibida por el servidor web
http://192.168.1.24
incluye/some/path
y, por lo tanto, no sirve la página requerida. Cuando pasa el cursor sobre un enlace una vez que se ha publicado una página,
/some/path
falta en la 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 buscando una solución que solo implique cambiar la configuración del servidor web example.com
. Podemos cambiar la configuración en 192.168.1.24
(también Nginx), sin embargo, queremos intentar evitar esto porque tendremos que repetir esta configuración para cientos de servidores diferentes cuyo acceso se realiza mediante proxy example.com
.