Często widzę to zrobione za pomocą mod_rewrite:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
Oznacza to: „Jeśli plik nie istnieje w systemie plików, należy go proxy przez mój klaster mod_proxy_balancer”. W przeciwnym razie, jeśli plik istnieje w systemie plików, jest po prostu obsługiwany przez Apache w stosunku do zdefiniowanego DocumentRootw twoim wirtualnym hoście.
Ale to nie jest mój ulubiony sposób, głównie dlatego, że wymagałoby statwywołania systemowego na żądanie.
Dzięki mod_proxy możesz używać, ProxyPassMatchjeśli masz wystarczająco nową wersję Apache ( zobacz dokumentację ). Jak na przykład:
ProxyPassMatch \.(gif|jpe?g|css|js)$ !
Który wykorzystuje! wskazując, że Apache nie powinien proxy żądań pasujących do tego wyrażenia regularnego.
Jeśli używasz starszej wersji Apache, będziesz mieć do ProxyPassdyspozycji dyrektywę, ale pasuje ona tylko do prefiksów URI (jest to moja obecna preferowana metoda):
ProxyPass /images !
ProxyPass /stylesheets !
Oczywiście, jeśli musisz wykonać dopasowanie wyrażeń regularnych, jak wspomniano powyżej, możesz po prostu zmodyfikować regułę mod_rewrite, którą zamieściłem na górze, aby zanegować dopasowanie do %{REQUEST_URI}.
Mam nadzieję, że to pomaga!