Estoy tratando de hacer que estas 2 directivas de ubicación funcionen en Nginx, pero recibo algunos errores al iniciar Nginx.
location ~ ^/smx/(test|production) {
proxy_pass http://localhost:8181/cxf;
}
location ~ ^/es/(test|production) {
proxy_pass http://localhost:9200/;
}
Este es el error que estoy recibiendo:
nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
¿Le suena familiar a alguien? ¿Qué me estoy perdiendo aquí?
/
solucionó mi problema de configuración, era difícil de entender, ¡gracias!Le dice que el URI en la directiva de paso de proxy no se puede usar en una ubicación de expresiones regulares. Esto se debe a que nginx no puede reemplazar la parte del URI que coincide con la expresión regular en el
location
bloque con la que se aprobó en laproxy_pass
directiva de forma genérica.Simplemente imagine que su regex de ubicación es
/foo/(.*)/bar
, y usted especificaproxy_pass http://server/test
, nginx tendría que asignar su regex de ubicación a otra en un nivel superior porque no desea terminar con/foo/test/bar/something
pero con/test/something
. Entonces eso no es posible de forma nativa.Entonces, para esta parte, usar lo siguiente debería funcionar:
Sin embargo, no será posible reescribir los redireccionamientos para que coincidan con el patrón de URI del bloque de ubicación porque reescribe el URI actual que se está procesando, lo que hace imposible cambiar el
Location
encabezado en función de la solicitud inicial antes de volver a escribir.fuente