回答:
私はこれをmod_rewriteでよく見ます:
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_FILENAME} !-f
RewriteRule ^/(.*)$ balancer://app_cluster%{REQUEST_URI} [P,QSA,L]
「ファイルがファイルシステムに存在しない場合、mod_proxy_balancerクラスターを介してプロキシする」という意味です。それ以外の場合、ファイルがファイルシステムに存在する場合、DocumentRoot
仮想ホストで定義されたものに関連して、Apacheによって単純に提供されます。
しかし、それは私のお気に入りの方法ではありません。主にstat
リクエストごとにシステムコールが必要になるからです。
mod_proxyを使用ProxyPassMatch
すると、Apacheの新しいバージョンが十分にある場合に使用できます(ドキュメントを参照)。といった:
ProxyPassMatch \.(gif|jpe?g|css|js)$ !
を使用する!Apacheがその正規表現に一致するリクエストをプロキシしてはならないことを示すため。
古いバージョンのApacheを使用している場合は、ProxyPass
ディレクティブを使用できますが、URIプレフィックスのみに一致します(これは現在の推奨方法です)。
ProxyPass /images !
ProxyPass /stylesheets !
もちろん、上記のように正規表現の一致を行う必要がある場合は、上に投稿したmod_rewriteルールを変更して、に対する一致を無効にすることができます%{REQUEST_URI}
。
お役に立てば幸いです!
try_files
、ファイルの存在をチェックするため、より似ていると思います。ProxyPass
しかし、それを行う方法はないようです。