Eu costumo ver isso feito com mod_rewrite:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
Significa "Se um arquivo não existir no sistema de arquivos, faça o proxy através do meu cluster mod_proxy_balancer". Caso contrário, se o arquivo existir no sistema de arquivos, ele será simplesmente exibido pelo Apache em relação ao definido DocumentRoot
no seu host virtual.
Mas essa não é a minha maneira favorita, principalmente porque exigiria uma stat
chamada do sistema por solicitação.
Com mod_proxy, você pode usar ProxyPassMatch
se tiver uma versão nova o suficiente do Apache ( consulte a documentação ). Tal como:
ProxyPassMatch \.(gif|jpe?g|css|js)$ !
Que usa o! para indicar que o Apache não deve fazer proxy de solicitações correspondentes a essa expressão regular.
Se você estiver usando uma versão mais antiga do Apache, você terá a ProxyPass
diretiva disponível, mas ela corresponderá apenas aos prefixos de URI (este é o meu método preferido atualmente):
ProxyPass /images !
ProxyPass /stylesheets !
Obviamente, se você deve fazer a correspondência de expressões regulares conforme mencionado acima, pode simplesmente modificar a regra mod_rewrite que publiquei na parte superior para negar uma correspondência contra a %{REQUEST_URI}
.
Espero que ajude!