Вступление
Nginx превосходно работает при обработке запросов на веб-страницы, но даже если веб-страница может показаться быстрой, настройка Nginx по умолчанию вызовет https://developers.google.com/speed/ от Google PageSpeed / Insights / [PageSpeed Insights] инструмент для выявления неэффективности на вашем сайте и плохой оценки. Google использует скорость вашего сайта в качестве ключевого фактора при определении позиции вашего сайта в поиске.
В этом руководстве вы внесете быстрые изменения в файл конфигурации вашего домена, которые мгновенно повысят скорость отклика вашего сайта и его показатель PageSpeed. Цель состоит в том, чтобы получить оценку выше 80/100, поскольку это порог, выше которого Google будет применять зеленый маркер к вашей оценке, сигнализируя о быстром сайте.
Во-первых, вы включите сжатие Gzip для определенных типов файлов. Затем вы настроите кэширование браузера для дополнительного повышения. Эти методы улучшат скорость любого сайта, работающего на Nginx, независимо от программного обеспечения или CMS, на которых он построен. Например, медленная и неэффективная установка Wordpress приведет к мгновенной выгоде без необходимости касаться линии ядра или платить за дорогие плагины производительности. Этот подход работает, даже если сайт работает на маломощном виртуальном хостинге, если на сервере установлен Nginx, и вы можете редактировать файл конфигурации.
Предпосылки
Для завершения этого урока вам понадобится:
-
Один сервер Ubuntu 16.04, настроенный с помощью this руководство по начальной настройке сервера, включая пользователя без полномочий root и брандмауэр.
-
Nginx установлен на вашем сервере, следуя инструкции Как установить Nginx в Ubuntu 16.04.
Шаг 1 - Получить начальный балл PageSpeed
Прежде чем вносить какие-либо изменения, давайте запишем существующую оценку PageSpeed, чтобы у нас была базовая производительность, которую можно сравнить с завершением учебника. Сделайте это, вставив URL сайта в Google’s PageSpeed Insights сервис и нажав * Run Insights *.
Вы увидите результаты, подобные следующим:
изображение: https: //assets.digitalocean.com/articles/pagespeed_nginx_1604/LbXFqZD.png [Оценка PageSpeed до оптимизации]
В этом примере мы видим низкий балл 63 на мобильном и 74 на рабочем столе, потому что сжатие и кеширование браузера неправильно настроены на сервере. К концу этого руководства эти два элемента будут решены на всех типах устройств с помощью изменений конфигурации Nginx.
Начнем с настройки Nginx для сжатия некоторых ответов.
Шаг 2 - Включение сжатия
Файлы CSS, JavaScript и изображения могут быть большими, что увеличивает объем данных, которые пользователи должны загружать. Сжатие означает, что эти активы уменьшены в размере до более компактной версии, которая меньше, но все же содержит все необходимые данные. Gzip - это один из вариантов выполнения этого сжатия на Nginx. Он доступен во всех основных дистрибутивах Linux, и его просто нужно правильно включить и настроить. С включенным сжатием Gzip браузеры могут загружать статические ресурсы быстрее, поэтому инструмент PageSpeed помечает его как нечто, требующее решения.
Чтобы включить сжатие, откройте файл конфигурации Nginx для своего сайта в nano или в своем любимом текстовом редакторе. Мы будем использовать файл по умолчанию в этом примере:
sudo nano /etc/nginx/sites-available/
Найдите блок конфигурации сервера, который будет выглядеть следующим образом:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
server {
listen 80 default_server;
listen [::]:80 default_server;
. . .
}
Давайте добавим серию фрагментов для настройки сжатия.
Сначала включите сжатие Gzip и установите уровень сжатия:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
server {
listen 80 default_server;
listen [::]:80 default_server;
Для этого значения вы можете выбрать число между + 1 +
и + 9 +
. + 5 +
является идеальным компромиссом между размером и загрузкой процессора, предлагая сокращение на 75% для большинства файлов ASCII (почти идентично уровню 9).
Затем скажите Nginx не сжимать что-либо, что уже мало и вряд ли уменьшится намного дальше. По умолчанию это + 20 +
байт, что плохо, так как обычно приводит к увеличению размера файлов после сжатия. Вместо этого установите + 256 +
:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
...
gzip_comp_level 5;
Затем скажите Nginx сжимать данные даже для клиентов, которые подключаются к нам через прокси-серверы, такие как CloudFront:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
...
gzip_min_length 256;
Затем скажите этим прокси-серверам кэшировать как сжатую, так и обычную версию ресурса всякий раз, когда меняется заголовок клиентских возможностей + Accept-Encoding +
. Это позволяет избежать проблемы, когда клиент, не поддерживающий Gzip, который сегодня встречается крайне редко, будет отображать бред, если его прокси предоставит ему сжатую версию.
...
gzip_proxied any;
Наконец, укажите MIME-типы для вывода, который вы хотите сжать. Мы сжимаем изображения, данные JSON, шрифты и другие распространенные типы файлов:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
...
gzip_vary on;
Когда вы закончите, весь раздел должен выглядеть следующим образом:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
server {
listen 80 default_server;
listen [::]:80 default_server;
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
# text/html is always compressed by gzip module
}
Сохраните и закройте файл.
Вы добавили много строк в файл конфигурации, и всегда есть вероятность, что отсутствует символ или точка с запятой, которая может что-то сломать. Чтобы убедиться, что в этом файле нет ошибок, проверьте конфигурацию Nginx:
sudo nginx -t
Если вы внесли изменения в точности так, как указано в этом руководстве, вы не увидите сообщений об ошибках.
Это изменение обеспечит наибольшее ускорение скорости вашего сайта, но вы также можете настроить Nginx для использования кэширования браузера, что приведет к снижению производительности сервера.
Шаг 3 - Настройка кэширования браузера
При первом посещении домена эти файлы загружаются и сохраняются в кэше браузера. При последующих посещениях браузер может обслуживать локальные версии вместо повторной загрузки файлов. Это позволяет веб-странице загружаться намного быстрее, так как для этого нужно только извлечь данные, которые изменились с момента последнего посещения. Он предлагает гораздо лучший опыт для пользователей и является причиной, по которой Google PageSpeed Insights рекомендует его реализовать.
Еще раз, откройте файл конфигурации Nginx по умолчанию в вашем редакторе:
sudo nano /etc/nginx/sites-available/default
Вы добавите небольшой фрагмент кода, который скажет браузерам хранить CSS, JavaScript, изображения и PDF-файлы в своем кеше в течение семи дней.
Вставьте следующий фрагмент внутри блока сервера непосредственно после предыдущего кода для сжатия Gzip:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
...
# text/html is always compressed by gzip module
Конечный файл конфигурации Nginx должен выглядеть так:
/ И т.д. / Nginx / сайты-отсутствуют / по умолчанию
server {
listen 80 default_server;
listen [::]:80 default_server;
gzip on;
gzip_comp_level 5;
gzip_min_length 256;
gzip_proxied any;
gzip_vary on;
gzip_types
application/atom+xml
application/javascript
application/json
application/ld+json
application/manifest+json
application/rss+xml
application/vnd.geo+json
application/vnd.ms-fontobject
application/x-font-ttf
application/x-web-app-manifest+json
application/xhtml+xml
application/xml
font/opentype
image/bmp
image/svg+xml
image/x-icon
text/cache-manifest
text/css
text/plain
text/vcard
text/vnd.rim.location.xloc
text/vtt
text/x-component
text/x-cross-domain-policy;
# text/html is always compressed by gzip module
location ~* \.(jpg|jpeg|png|gif|ico|css|js|pdf)$ {
expires 7d;
}
}
Сохраните и закройте файл для выхода. Убедитесь, что в конфигурации нет ошибок:
sudo nginx -t
Затем перезапустите Nginx, чтобы применить эти новые директивы для входящих запросов.
sudo systemctl restart nginx
Вы настроили Nginx, чтобы получать лучшие оценки PageSpeed. Давайте посмотрим, как эти изменения влияют на нашу PageSpeed.
Шаг 4 - Измерение результатов
Чтобы проверить, на сколько пунктов эти изменения конфигурации увеличили ваш показатель PageSpeed, запустите свой сайт с помощью инструментов PageSpeed Insights еще раз, вставив URL-адрес и нажав * Run Insights *. Вы увидите, что предупреждения о сжатии и кэшировании браузера исчезли:
изображение: https: //assets.digitalocean.com/articles/pagespeed_nginx_1604/IQolNMR.png [Оценка PageSpeed после выбора]
Сравните новую оценку с вашей начальной метрикой. По завершении этого урока у вас должна быть оценка, как минимум, на 10 баллов выше, чем раньше.
Нашей целью было набрать более 80 баллов. Если ваш сайт все еще ниже этого порога, есть другие вещи, на которые вам нужно обратить внимание. PageSpeed Insights подробно расскажет, что это такое, и покажет, как их исправить, если щелкнуть ссылку * Показать, как исправить * для каждой проблемы. Точные шаги различаются для каждого сайта и выходят за рамки этого учебника.
Заключение
Вы ускорили свой сайт, внеся простые изменения в конфигурацию Nginx. Ваша оценка PageSpeed теперь намного лучше, и сайт загружается намного быстрее. Это сделает пользователей счастливее и повысит качество вашего сайта в глазах Google. PageSpeed является очень важным сигналом ранжирования, и вы сейчас демонстрируете, что ваш домен предлагает приятные впечатления для посетителей.
Изменение конфигурации Nginx - это всего лишь один из способов улучшения PageSpeed, и его может быть недостаточно. Вам по-прежнему необходимо писать исполняющий код, надлежащим образом кэшировать объекты, обслуживать ресурсы через сеть доставки контента (CDN) и, по возможности, использовать минимизацию для обеспечения быстрой работы.