Сжатие Apache 2.4 не работает при использовании псевдонима и обратного прокси - PullRequest
0 голосов
/ 24 марта 2019

Проблема: У меня есть каталог псевдонима для URL-пути, который извлекает статические данные. Я могу получить это для сжатия GZIP просто отлично. Однако, когда я добавляю прокси к другим путям и добавляю исключение для моих статических данных, сжатие прекращается.

Окружающая среда

  • Windows x64
  • Apache 2.4

Конфигурация ключа в httpd.conf

<Directory "${SRVROOT}/static">
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

# I have used FilterProvider as well an know this just does javascript at the moment
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
SetOutputFilter DEFLATE

<IfModule alias_module>
    Alias "/static" "${SRVROOT}/static"
    ScriptAlias /cgi-bin/ "${SRVROOT}/cgi-bin/"
</IfModule>

С этой конфигурацией и папкой " static " в SRVROOT я помещаю файл bundle.js (3M данных). Опрос этого файла на http://localhost/static/bundle.js дает мне 600K загрузки со сжатием gzip. ВСЕ ХОРОШО

Теперь о переменах. Путь к приложению по умолчанию требует обратного прокси-сервера к другому приложению, и apache просто обслуживает статический контент.

<IfModule proxy_html_module>
    Include conf/extra/proxy-html.conf
</IfModule>

extra / proxy-html.conf содержимое файла

#default proxy stuff above...
ProxyRequests off
ProxyPass / http://localhost:5000/
#ProxyPass /static/ /
ProxyHTMLURLMap http://localhost:5000/ /

<Location />
        ProxyPassReverse /
        ProxyHTMLEnable On
        ProxyHTMLURLMap  /      /
        RequestHeader    unset  Accept-Encoding
</Location>

<Location /static/ >
    ProxyPass !
</Location>

Это все еще позволяет мне получать статические данные, только теперь сжатие gzip не происходит. Я не знаю, если это ошибка в apache или есть лучший способ настроить это.

Вот мои требования:

  • Я не могу изменить путь URL-адреса (статический - там, где он есть, а содержимое корневого URL-адреса получает обратный прокси
  • мне нужно сжатие
  • Развертывание происходит в корневой папке, которая, честно говоря, не называется static , поэтому факт, что я маршрутизирую (в этом примере) static в {некоторый каталог} / static это действительно http://localhost/static/* в папку dist во всей действительности.

1 Ответ

0 голосов
/ 25 марта 2019

Похоже, что RequestHeader unset Accept-Encoding перетекает в другое определение местоположения. Кажется, что не должно быть ожидаемым поведением. Похоже, есть два решения этой проблемы.

  1. Удалите ProxyHTMLURLMap и RequestHeader сбрасывает Accept-Encoding , так как для этого необходимо распаковать содержимое сделать переписывание URL.
  2. надуть и сдуть содержимое. Мне еще предстоит определить, будет ли это раздувать и выкачивать статический контент на сервере. Единственная причина, по которой я упоминаю об этом, заключается в том, что использование Accept-Encoding , казалось, перетекло в статический раздел. - Пока не знаю, как это проверить.

Пример удаления ProxyURLMap

ProxyRequests off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/

<Location /static/ >
    ProxyPass !
</Location>

#Do not use this anymore
#<Location />
#        ProxyPassReverse /
#        ProxyHTMLEnable On
#        ProxyHTMLURLMap  /      /
#        RequestHeader    unset  Accept-Encoding
#</Location>

Пример использования INFLATE; DEFLATE

ProxyRequests off
ProxyPass / http://localhost:5000/
ProxyPassReverse / http://localhost:5000/

<Location />
        ProxyPassReverse /
        ProxyHTMLEnable On
        ProxyHTMLURLMap  /      /
        SetOutputFilter INFLATE;DEFLATE
</Location>

<Location /static/ >
    ProxyPass !
</Location>
...