Настройка Varnish для кеширования Magento 2 на CentOS 7
Настройка Varnish для кеширования Magento 2 на CentOS 7
Configure Magento 2 to use Varnish on CentOS 7
В этой серии мы расскажем об установке и настройке Varnish, чтобы сделать магазин Magento очень быстрым.

Скорость страницы или время загрузки имеют решающее значение для успеха вашего интернет-магазина. Время загрузки - это общее количество времени, которое требуется для загрузки содержимого на определенной странице. Чем больше время загрузки, тем ниже коэффициент конверсии. Это также один из наиболее важных факторов, которые Google считает при определении рейтинга в поисковых системах.
Прежде чем вы приступите
Убедитесь, что вы следовали инструкциям из первого руководства и у вас EPEL
включен репозиторий.
Как это устроено
Varnish не поддерживает SSL, поэтому нам нужно использовать другую службу в качестве прокси завершения SSL, в нашем случае это будет Nginx .
Когда посетитель открывает ваш сайт через HTTPS
порт, 443
запрос обрабатывается Nginx, который работает как прокси и передает запрос Varnish (через порт 80). Varnish проверяет, кэширован ли запрос или нет. Если он кэширован, Varnish вернет кешированные данные в Nginx без запроса к приложению Magento. Если запрос не кэширован, Varnish передаст запрос Nginx через порт, 8080
который будет извлекать данные из Magento, а Varnish кэширует ответ.
Если посетитель открывает ваш сайт без SSL
порта, 80
он будет перенаправлен HTTPS
на 443
URL порта с помощью Varnish.
Настройка Nginx
Нам нужно отредактировать серверный блок Nginx, который мы создали в первом посте, чтобы обрабатывать завершение SSL / TLS и как серверную часть для Varnish.
upstream fastcgi_backend {
server unix:/run/php-fpm/magento.sock;
}
server {
listen 127.0.0.1:8080;
server_name example.com www.example.com;
set $MAGE_ROOT /opt/magento/public_html;
set $MAGE_MODE developer; # or production
include snippets/letsencrypt.conf;
include /opt/magento/public_html/nginx.conf.sample;
}
server {
listen 443 ssl http2;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
return 301 https://example.com$request_uri;
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
include snippets/ssl.conf;
access_log /var/log/nginx/example.com-access.log;
error_log /var/log/nginx/example.com-error.log;
location / {
proxy_pass http://127.0.0.1;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port 443;
}
}
Нам также необходимо удалить из nginx.conf
файла блок сервера Nginx по умолчанию . Прокомментируйте или удалите следующие строки:
...
# server {
# listen 80 default_server;
# listen [::]:80 default_server;
# server_name _;
# root /usr/share/nginx/html;
#
# # Load configuration files for the default server block.
# include /etc/nginx/default.d/*.conf;
#
# location / {
# }
#
# error_page 404 /404.html;
# location = /40x.html {
# }
#
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# }
# }
...
Перезагрузите сервис Nginx, чтобы изменения вступили в силу:
sudo systemctl reload nginx
Установка и настройка Varnish
Varnish - это быстрый HTTP-ускоритель с обратным прокси-сервером, который будет находиться перед нашим веб-сервером и будет использоваться в качестве Full Page Cache
решения для нашей установки Magento.
Установите Varnish через yum с помощью следующей команды:
sudo yum install varnish
Чтобы настроить Magento на использование Varnish run:
php /opt/magento/public_html/bin/magento config:set --scope=default --scope-code=0 system/full_page_cache/caching_application 2
Далее нам нужно сгенерировать файл конфигурации Varnish:
sudo php /opt/magento/public_html/bin/magento varnish:vcl:generate > /etc/varnish/default.vcl
Приведенную выше команду необходимо запустить от имени пользователя root или пользователя с привилегиями sudo, и она создаст файл /etc/varnish/default.vcl
с использованием значений по умолчанию, которые являются localhost
внутренним хостом и портом 8080
как внутренним портом.
В конфигурации по умолчанию указан неправильный URL-адрес файла проверки работоспособности. Откройте default.vcl
файл и удалите /pub
часть из выделенной желтым цветом строки:
...
.probe = {
# .url = "/pub/health_check.php";
.url = "/health_check.php";
.timeout = 2s;
.interval = 5s;
.window = 10;
.threshold = 5;
}
...
По умолчанию Varnish прослушивает порт 6081
, и нам нужно изменить его на 80
:
VARNISH_LISTEN_PORT=80
Как только вы закончите с модификациями, запустите и включите службу Varnish:
sudo systemctl enable varnish
sudo systemctl start varnish
Вы можете использовать этот varnishlog
инструмент для просмотра веб-запросов в реальном времени и для отладки Varnish.
Вывод
В этом уроке мы показали вам, как ускорить работу вашего приложения Magento, реализовав Varnish как кеш-сервер страниц.
Этот пост является частью статьи Как установить и настроить Magento 2 в серии CentOS 7