Estou tentando criar um proxy reverso que corresponda a todas as URLs, exceto uma no Apache 2.2. Ele funciona no Apache 2.4 (Centos 7), mas não no Apache 2.2 (Centos 6.6) ...
# Do not modify this
<LocationMatch "^/my-website-2">
ProxyPass http://X.X.X.X:PORT/my-website-2
ProxyPassReverse http://X.X.X.X:PORT/my-website-2
(...)
</LocationMatch>
# Match every URL except the one finishing with /redirect
<LocationMatch "^/my-website(?!/redirect)">
ProxyPass http://X.X.X.X:PORT/my-website
ProxyPassReverse http://X.X.X.X:PORT/my-website
AuthType XXX
RequestHeader set XXX YYY
(...)
</LocationMatch>
# Do anothers directives with this URL only, finishing with /redirect
<Location "/my-website/redirect">
AuthType XXX
(...)
</Location>
Meu servidor está procurando por / var / www / html / my-website (que não existe) quando eu digito link porque o regex não corresponde a ^ / my-website (?! / redirect)
Eu sei que o Apache 2.2 não entende cada regex PCRE negativo, mas parece que existem alguns truques ... Veja:
Então, eu tento uma regex simples:
<LocationMatch "/my-website(.*)">
... e parece que nem é interpretado como PCRE ... Com esse caso de uso, se eu digitar /my-website(.*) na URL, isso funcionará.
Mesmo comportamento com (De link ):
<LocationMatch "/(extra|special)/data">
... Preciso digitar link na barra de URL do navegador.
O Apache HTTPd 2.2 precisa de um pacote adicional para entender o PCRE no LocationMatch?
Pacotes instalados:
httpd.x86_64 2.2.15-60.el6.centos.6
apr.x86_64 1.3.9-5.el6_9.1 @Default_Organization_CentOS_6_CentOS_6_Update_x86_64
apr-util.x86_64 1.3.9-3.el6_0.1 @in-std
pcre.x86_64 7.8-7.el6 @Default_Organization_CentOS_6_CentOS_6_Base_x86_64
pcre-devel.x86_64 7.8-7.el6 @Default_Organization_CentOS_6_CentOS_6_Base_x86_64
Estranho ...
Obrigado
Tags proxy apache-2.2 httpd pcre