Estou tentando fazer com que essas duas diretivas de local funcionem no Nginx, mas estou recebendo alguns erros ao inicializar o Nginx.
location ~ ^/smx/(test|production) {
proxy_pass http://localhost:8181/cxf;
}
location ~ ^/es/(test|production) {
proxy_pass http://localhost:9200/;
}
Este é o erro que estou recebendo:
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
Parece familiar para alguém? O que estou perdendo aqui?
/
corrigiu meu problema de configuração, era difícil de entender, obrigado!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
location
bloco pelo que foi passado naproxy_pass
diretiva de maneira genérica.Simplesmente imagine que sua regex de localização é
/foo/(.*)/bar
e você especifica que oproxy_pass http://server/test
nginx precisaria mapear sua regex de localização para outra em um nível superior, porque você não deseja terminar com/foo/test/bar/something
mas/test/something
. Portanto, isso não é possível nativamente.Portanto, para esta parte, o seguinte deve funcionar:
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
Location
cabeçalho com base na solicitação inicial antes de reescrever.fonte