mod_rewrite не работает с обратным прокси в vhost - PullRequest
0 голосов
/ 08 февраля 2012

Все, что я пытаюсь сделать, это:

  • переписать /static/styles/min.css в /static/styles/min.css.gz
  • переписать / статический /scripts / min.js в /static/scripts/min.js.gz

Хитрость заключается в том, что эти файлы находятся на удаленном (общедоступном) сервере, к которому я использую обратное прокси.Я делаю это так, чтобы я мог обойти проблему того же происхождения с нашим javascript, и ускорить доставку в целом.Файлы .gz уже существуют.Независимо от того, что я делаю, я не могу запросить файл .js и вернуть файл .gz.Я пробовал это с многочисленными различными RewriteConds безрезультатно.Я также попробовал это с отключенным Accept-Encoding RequestHeader и прокомментировал.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>

1 Ответ

1 голос
/ 09 февраля 2012

FilesMatch правила применяются только к файлам на диске - прокси-запрос не является файлом на диске и поэтому не будет перехвачен правилом FilesMatch.

Возможно, вы хотите

<LocationMatch "^/static/.*\.css\.gz$">
    ProxyPassReverse /
    ....
</LocationMatch>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...