Я зазвичай бачу, що це робиться з mod_rewrite:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
Це означає: "Якщо файлу у файловій системі не існує, проксі проксі через мій кластер mod_proxy_balancer." В іншому випадку, якщо файл існує у файловій системі, він просто обслуговується Apache щодо визначеного DocumentRootу вашому virtualhost.
Але це не мій улюблений спосіб, здебільшого тому, що він вимагатиме statсистемного дзвінка за запитом.
З mod_proxy ви можете користуватися, ProxyPassMatchякщо у вас є достатньо нова версія Apache ( див. Документацію ). Як от:
ProxyPassMatch \.(gif|jpe?g|css|js)$ !
Який використовує! щоб вказувати Apache, не слід прокси-запити, що відповідають цьому регулярному виразу
Якщо ви використовуєте старішу версію Apache, у вас буде ProxyPassдоступна директива, але вона відповідає лише префіксам URI (це мій поточний бажаний метод):
ProxyPass /images !
ProxyPass /stylesheets !
Звичайно, якщо вам потрібно регулярно співставити вирази, як ви згадували вище, ви можете просто змінити правило mod_rewrite, яке я розмістив у верхній частині, щоб зняти відповідність проти %{REQUEST_URI}.
Сподіваюся, що це допомагає!