Nginx и Apache — это веб-сервера, которые зарекомендовали себя, как надежное решение даже для больших проектов.
Производительность сайта отчасти зависит от размера файлов, которые должен загрузить браузер посетителя. Уменьшив размер передаваемых файлов, вы можете сделать ваш сайт быстрее. Кроме того, это может удешевить ваш сайт для тех посетителей, которые платят за использование полосы пропускания по лимитным соединениям. Один из самых эффективных методов ускорить ответ от вашего веб-сервера nginx — это включить GZIP сжатие.
Gzip – это популярная программа для сжатия данных. Вы можете настроить веб-сервер Nginx для сжатия загружаемых файлов через gzip. Затем эти файлы распакуют браузеры – и сайт работает без каких-либо потерь, но имеет существенное преимущество: между веб-сервером и браузером передается меньший объем данных. Еще одна хорошая новость: сжатие широко поддерживается всеми основными браузерами, и не использовать ее нет причин.
Из-за особенностей работы сжатия в целом и gzip в частности, некоторые файлы сжимаются лучше, чем другие. Например, текстовые файлы сжимаются очень хорошо (часто их можно сделать в два раза меньше). А изображения – файлы JPEG или PNG – уже сжаты по своей природе, и повторное сжатие с помощью gzip не дает практически никаких результатов. Конечно, операция сжатия файлов использует ресурсы сервера, поэтому лучше сжимать только те файлы, размер которых существенно уменьшится.
В этом мануале вы узнаете, как настроить Nginx для поддержки сжатия gzip. Это уменьшит размер контента, отправляемого посетителям вашего сайта, и повысит его производительность
Настройка gzip в Nginx
Чтобы изменить стандартную конфигурацию gzip в Nginx, откройте главный конфигурационный файл Nginx в nano или в другом текстовом редакторе:
sudo nano /etc/nginx/nginx.conf
Найдите раздел настроек gzip, который выглядит так:
http { . . . ## # `gzip` Settings # # gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; . . . }
Как видите, сжатие gzip действительно включено (директива gzip on), но некоторые дополнительные параметры закомментированы знаком # и не используются. Давайте внесем в этот раздел несколько изменений:
Чтобы расскомментировать настройки, необходимо удалить # в начале строки.
Параметры gzip nginx:
gzip_min_length 256 устанавливает минимальную длину ответов, для которых будет применяться сжатие. Сжимать очень маленькие файлы практически не имеет смысла, так как постоянное сжатие приведет к повышению нагрузки на процессоры сервера и клиента.
gzip_types объявляет типы файлов, которые необходимо сжимать (веб-шрифты, иконки, XML-каналы, структурированные данные JSON и изображения SVG).
http { . . . ## # `gzip` Settings # # gzip on; gzip_disable "msie6"; gzip_vary on; gzip_proxied any; gzip_comp_level 6; gzip_buffers 16 8k; gzip_http_version 1.1; gzip_min_length 256; gzip_types text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml application/xml+rss application/json; . . . }
Сохраните и закройте файл.
Не забывайте, что после внесения изменений необходимо проверять их корректность командой:
nginx -t
Чтобы включить новую конфигурацию, перезапустите Nginx:
sudo systemctl restart nginx
Затем давайте убедимся, что новая конфигурация работает.
Настройка gzip в Apache.
Чтобы включить gzip-сжатие на сервере под управлением Apache, нужно внести изменения в файл .htaccess находящийся в корневой папке вашего сайта.
# Сжатие HTML, CSS, JavaScript, текста, XML и шрифтов AddOutputFilterByType DEFLATE application / javascript AddOutputFilterByType DEFLATE application / rss + xml AddOutputFilterByType DEFLATE application / vnd.ms-fontobject AddOutputFilterByType DEFLATE application / x-font AddOutputFilterByType DEFLATE application / x-font-opentype AddOutputFilterByType DEFLATE application / x-font-otf AddOutputFilterByType DEFLATE application / x-font-truetype AddOutputFilterByType DEFLATE application / x-font-ttf AddOutputFilterByType DEFLATE application / x-javascript AddOutputFilterByType DEFLATE application / xhtml + xml AddOutputFilterByType DEFLATE application / xml AddOutputFilterByType DEFLATE font / opentype AddOutputFilterByType DEFLATE font / otf AddOutputFilterByType DEFLATE font / ttf AddOutputFilterByType DEFLATE image / svg + xml AddOutputFilterByType DEFLATE image / x-icon AddOutputFilterByType DEFLATE text / css AddOutputFilterByType DEFLATE text / html AddOutputFilterByType DEFLATE text / javascript AddOutputFilterByType DEFLATE text / plain AddOutputFilterByType DEFLATE text / xml # Удалить ошибки браузера (необходимо только для действительно старых браузеров) BrowserMatch ^ Mozilla / 4 gzip-только-текст / html BrowserMatch ^ Mozilla / 4 \ .0 [678] no-gzip BrowserMatch \ bMSIE! No-gzip! Gzip-only-text / html Заголовок приложения Vary User-Agent </ IfModule>