簡體   English   中英

mod_rewrite無法在vhost中使用反向代理

[英]mod_rewrite not working with reverse proxy in vhost

我要做的就是:

  • 將/static/styles/min.css重寫為/static/styles/min.css.gz
  • 將/static/scripts/min.js重寫為/static/scripts/min.js.gz

訣竅是這些文件位於我反向代理到的遠程(公共)服務器上。 我這樣做是為了解決我們的JavaScript的同源問題,並總體上加快投放速度。 .gz文件已經存在。 無論我做什么,我都無法請求.js文件並返回.gz文件。 我嘗試了許多不同的RewriteConds都沒有用。 我還嘗試了啟用RequestHeader未設置Accept-Encoding並將其注釋掉的嘗試。 Google PageSpeed一直告訴我它沒有收到壓縮版本,當我請求使用curl並手動設置“ Accept-Encoding:gzip,deflate”標頭時,我繼續收到未壓縮的版本。 我無法將重寫內容放在.htaccess文件中,因為在.htaccess文件之前已處理了反向代理,因此我需要在發生反向代理時重寫已經生效。 我完全不知所措。

這是我的非生產設置(我知道它需要固定):

<VirtualHost *:80>
  ServerName  ww.test.com
  DocumentRoot "/htdocs/public"

  Options +MultiViews
  AddEncoding x-gzip .gz
  AddEncoding gzip .gz

  RewriteEngine on

  RewriteCond %{HTTP:Accept-Encoding} gzip
  RewriteRule ^\.js$ $1\.js\.gz [L]

  RewriteCond %{HTTP:Accept-Encoding} gzip
  RewriteRule ^\.css$ $1\.css\.gz [L]

  <FilesMatch .*\.css\.gz>
    ForceType text/css
    Header append Content-Encoding gzip
  </FilesMatch>

  <FilesMatch .*\.js\.gz>
    ForceType text/javascript
    Header append Content-Encoding gzip
  </FilesMatch>

  ProxyRequests off
  ProxyPass /static/ http://www.ourCDN.com/ourAccount/environmentName/

  <Location /static/>
    ProxyPassReverse /
    #RequestHeader    unset  Accept-Encoding
  </Location>   

  <Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
  </Directory>
</VirtualHost>

FilesMatch規則僅適用於磁盤上的文件-代理請求不是磁盤上的文件,因此, FilesMatch規則不會捕獲該請求。

你可能想要

<LocationMatch "^/static/.*\.css\.gz$">
    ProxyPassReverse /
    ....
</LocationMatch>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM