tutorial - ¿Cómo se pueden usar las llamadas proxy a una URL específica con NGINX?
para que se usa elastic search (1)
Quiero usar NGINX como un proxy para llegar a Deluge, que está dentro de mi red doméstica (NGINX está disponible públicamente).
Esta configuración funciona:
location 8112;
location / {
proxy_pass http://deluge_address:8112;
}
Sin embargo, me gustaría usar una dirección en forma de http://nginx_address/deluge
para enviarla a http://deluge_address:8112
.
Intenté lo siguiente:
location /deluge/ {
proxy_pass http://deluge_address:8112/;
}
(Probé diferentes combinaciones de trailing /
- none work).
Pero recibo 404 Not found
lugar.
Tengo algunos conocimientos sobre redes, pero no demasiado. ¿Alguien tiene alguna idea de lo que estoy haciendo mal?
Encontré una solución para esto, pero también encontré un error en Nginx al mismo tiempo
https://trac.nginx.org/nginx/ticket/1370#ticket
Edit-1
Parece que el error que registré fue inválido, lo que incluso me ayudó a entender algunas cosas más. Así que edité la configuración un poco.
Necesita usar la configuración siguiente
location ~* /deluge/(.*) {
sub_filter_once off;
sub_filter_types text/css;
sub_filter ''"base": "/"'' ''"base": "/deluge/"'';
sub_filter ''<head>'' ''<head>/n<base href="/deluge/">'';
sub_filter ''src="/'' ''src="./'';
sub_filter ''href="/'' ''href="./'';
sub_filter ''url("/'' ''url("./'';
sub_filter ''url(/'/'' ''url(/'./'';
set $deluge_host 192.168.33.100;
set $deluge_port 32770;
proxy_pass http://$deluge_host:$deluge_port/$1;
proxy_cookie_domain $deluge_host $host;
proxy_cookie_path / /deluge/;
proxy_redirect http://$deluge_host:$deluge_port/ /deluge/;
}
La clave era insertar una url base en las páginas usando debajo
sub_filter ''<head>'' ''<head>/n<base href="/deluge/">'';
Y luego haga el reemplazo en los atributos src
y href
en html. Y también url(''
en entradas css.
Afortunadamente diluvio tiene una configuración de JavaScript que tiene la url base. Entonces podemos anular el mismo añadiendo
sub_filter ''"base": "/"'' ''"base": "/deluge/"'';