nginx: agregar a la URL proxy con proxy_pass

nginx: agregar a la URL proxy con proxy_pass

Estoy lidiando con algunos problemas heredados en los que tengo que reconfigurar servidores que alojan una aplicación basada en PHP. Una de las decisiones fue pasar de Apache a Nginx.

Ahora la aplicación alberga dos tipos de respuestas;

/some/path -> HTML templates
/api/some/path -> JSON

La aplicación está basada en Laravel. Ahora tengo dos hosts virtuales my.app.comy api.app.com. Lo que he pensado como una solución decente es enviar api.app.comlas solicitudes my.app.comcon un /apiprefijo antepuesto a la ruta de la solicitud. Entonces;

GET api.app.com/user -> NGINX PROXY -> my.app.com/api/user

No soy un experto en la configuración de Nginx y esto es lo que creo que debería funcionar:

location / {
    proxy_pass http://my.app.com:8888/api;
    proxy_set_header X-Real-IP $remote_addr;
}

La idea es garantizar que las personas que intentan OBTENER api.app.com/somethingrealmente obtengan una respuesta. my.app.com/api/something Pero eso no funciona. Sigo recibiendo excepciones de la aplicación que dicen que no se puede encontrar la ruta en las rutas.

¿Alguien puede decirme qué está pasando aquí?

Respuesta1

Un consejo dehttps://serverfault.com/a/586607:

location ~ /(?<path>.*) {
    proxy_pass http://my.app.com:8888/api/$path;
    proxy_set_header X-Real-IP $remote_addr;
}

información relacionada