ฉันมักจะเห็นสิ่งนี้ทำกับ 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}
ผมโพสต์ที่ด้านบนเพื่อลบล้างการแข่งขันกับ
หวังว่าจะช่วย!