Estoy acostumbrado a usar Apache con mod_proxy_html y estoy tratando de lograr algo similar con NGINX. El caso de uso específico es que tengo una interfaz de usuario de administración ejecutándose en Tomcat en el puerto 8080 en un servidor en el contexto raíz:
http://localhost:8080/
Necesito mostrar esto en el puerto 80, pero tengo otros contextos en el servidor NGINX ejecutándose en este host, así que quiero intentar acceder a esto en:
http://localhost:80/admin/
Esperaba que el siguiente bloque de servidor súper simple lo hiciera, pero no es así:
server {
listen 80;
server_name screenly.local.akana.com;
location /admin/ {
proxy_pass http://localhost:8080/;
}
}
El problema es que el contenido devuelto (html) contiene URL a scripts e información de estilo a la que se accede en el contexto raíz, por lo que necesito reescribir estas URL para que comiencen con / admin / en lugar de /.
¿Cómo hago esto en NGINX?
sub_filter "http://localhost/" "http://localhost/admin/"
text/html
mimetype, tuve que agregar tambiénsub_filter_types *;
.http://your_server/admin/
resolverlohttp://your_server
durante el proxy_pass pero no es así y aparece un errorreact-router /admin/ location did not match any routes
en mi aplicación porque mi aplicación no sabe nada sobre '/ admin'.proxy_redirect
directiva para que elLocation
encabezado enviado por la respuesta también se modifique de acuerdo con la URL. Echa un vistazo a este tutorial: cyberciti.biz/faq/...Es posible que también necesite que se establezca la siguiente directiva antes del primer "sub_filtro" para servidores backend con compresión de datos:
De lo contrario, es posible que no funcione. Para su ejemplo, se verá así:
fuente
Puede utilizar el siguiente ejemplo de configuración de nginx:
fuente
proxy_redirect off;
Aunque no estoy seguro de por qué . También agregaríaproxy_set_header X-Forwarded-Proto $scheme;
.