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 la proxy_pass
directiva de forma genérica.
Simplemente imagine que su regex de ubicación es /foo/(.*)/bar
, y usted especifica proxy_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:
server {
[ ... ]
location ~ ^/smx/(test|production) {
rewrite ^/smx/(?:test|production)/(.*)$ /cxf/$1 break;
proxy_pass http://localhost:8181;
}
location ~ ^/es/(test|production) {
rewrite ^/es/(?:test|production)/(.*)$ /$1 break;
proxy_pass http://localhost:9200;
}
}
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.
/
solucionó mi problema de configuración, era difícil de entender, ¡gracias!