Ele informa que o URI na diretiva de proxy pass não pode ser usado em um local de regex. Isso ocorre porque o nginx não pode substituir a parte do URI que corresponde ao regex no locationbloco pelo que foi passado na proxy_passdiretiva de maneira genérica.
Simplesmente imagine que sua regex de localização é /foo/(.*)/bare você especifica que o proxy_pass http://server/testnginx precisaria mapear sua regex de localização para outra em um nível superior, porque você não deseja terminar com /foo/test/bar/somethingmas /test/something. Portanto, isso não é possível nativamente.
Portanto, para esta parte, o seguinte deve 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;
}
}
No entanto, não será possível reescrever os redirecionamentos para corresponder ao padrão de URI do bloco de localização, porque ele reescreve o URI atual que está sendo processado, tornando impossível alterar o Locationcabeçalho com base na solicitação inicial antes de reescrever.
/corrigiu meu problema de configuração, era difícil de entender, obrigado!