Я пытаюсь включить сжатие gzip для Python 2.7 и Django 1.11 с помощью Apache 2.4.39 (Amazon).
Я успешно включил сжатие gzip при создании приложения Elastic Beanstalk php 7.2.
Я поместил файл .htaccess в /etc/httpd/conf.d и назвал его compression.conf
Я перезапустил Apache
$ sudo service httpd restart
На моей странице test.html использовались локальные файлы js и css, которые теперь были сжаты с помощью gzip.
Файл взят из секции сжатия html5 шаблона.
Однако у меня не получилось с Elastic Beanstalk, Python 2.7 и Django 1.11.
Я разместил файл здесь /etc/httpd/conf.d/compression.conf
перезапустил апач
Локальные файлы css и js не сжимаются.
В /var/log/httpd/error_log нет соответствующих ошибок
Любые предложения приветствуются.
==================================
оба файла в .ebextensions
из файла html5boilerplate .htaccess
<----------------- start enable_mod_deflate.conf ------------------------->
# ----------------------------------------------------------------------
# | Compression |
# ----------------------------------------------------------------------
<IfModule mod_deflate.c>
# Force compression for mangled `Accept-Encoding` request headers
#
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding
# https://calendar.perfplanet.com/2010/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Compress all output labeled with one of the following media types.
#
# https://httpd.apache.org/docs/current/mod/mod_filter.html#addoutputfilterbytype
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/geo+json" \
"application/vnd.ms-fontobject" \
"application/wasm" \
"application/x-font-ttf" \
"application/x-javascript" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/eot" \
"font/opentype" \
"font/otf" \
"image/bmp" \
"image/svg+xml" \
"image/vnd.microsoft.icon" \
"text/cache-manifest" \
"text/calendar" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/markdown" \
"text/vcard" \
"text/vnd.rim.location.xloc" \
"text/vtt" \
"text/x-component" \
"text/x-cross-domain-policy" \
"text/xml"
</IfModule>
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# Map the following filename extensions to the specified
# encoding type in order to make Apache serve the file types
# with the appropriate `Content-Encoding` response header
# (do note that this will NOT make Apache compress them!).
#
# If these files types would be served without an appropriate
# `Content-Enable` response header, client applications (e.g.:
# browsers) wouldn't know that they first need to uncompress
# the response, and thus, wouldn't be able to understand the
# content.
#
# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding
# https://httpd.apache.org/docs/current/mod/mod_mime.html#addencoding
<IfModule mod_mime.c>
AddEncoding gzip svgz
</IfModule>
</IfModule>
<--------------------------enable_mod_deflate.conf ------------------------------>
<---------------------- myapp.config ------------------------------------->
container_commands:
01_setup_apache:
command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
<---------------------- end myapp.config ------------------------------------->
На основе: http://www.tonmoygoswami.com/2013/05/how-to-enable-gzip-on-amazon-elastic.html






Лучший способ сделать это — создать файл в вашем каталоге .ebextensions.
Используйте эту папку для настройки всех файлов, которые будут запускаться при каждом запуске компьютера.
Таким образом, вам не нужно получать доступ к машине и изменять конфигурацию вручную.
Создайте файл .ebextensions/gzip.config следующим образом:
files:
"/etc/httpd/conf.d/enable_mod_deflate.conf":
mode: "000644"
owner: root
group: root
content: |
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xml+rss
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/png
AddOutputFilterByType DEFLATE image/gif
AddOutputFilterByType DEFLATE image/jpeg
DeflateCompressionLevel 9 # Highest level
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
@johnc Некоторые люди говорили, что для работы Apache необходимо перезапустить. Я бы посоветовал вам попробовать развернуть ваш .conf полностью пустым, просто чтобы проверить, нормально ли запускается сервер, и файл будет создан или скопирован /etc/httpd/conf.d/ правильно. В противном случае у вас может быть ошибка в содержимом .conf.
Я попробовал еще раз и избавился от всех ошибок. Однако Apache не сжимал файлы. Теперь я думаю, что это потому, что они размещены на Amazon S3 <link type = "text/css" href = "стенд-дизайн.s3.amazonaws.com/static/css/main.css" rel = "stylesheet" /> и не имеют общего доменного имени. Я решил проблему, заархивировав файлы с помощью 7zip. Как только я добавил метаданные в каждый из 5 файлов в S3 (Content-Encoding gzip), это сработало, и браузер показывает сжатый и несжатый размер на вкладке сети. Спасибо за вашу помощь.
Помните, что если вам нужно это для отдыха json API, вы должны добавить строку для этого AddOutputFilterByType DEFLATE application/json
Спасибо за предложение. Вы тестировали это на Django 1.11 и Python 2.7? ошибки: Helloapp-env-2 [Экземпляр: i-03905e92f051a489c] Ошибка команды в экземпляре. Код возврата: 1 Вывод: (TRUNCATED)... apache_is_running() Файл "/opt/elasticbeanstalk/hooks/config.py", строка 280, в файле sure_apache_is_running поднять PythonHooksError("Apache не запущен, но должен быть." ) config.PythonHooksError: Apache не запущен, но должен быть. Ошибка хука /opt/elasticbeanstalk/hooks/appdeploy/enact/01flip.py. Для получения дополнительной информации проверьте /var/log/eb-activity.log с помощью консоли.