Настройка Varnish для кеширования Magento 2 на CentOS 7

Configure Magento 2 to use Varnish on CentOS 7

11 Марта 2021 | CentOS

В этой серии мы расскажем об установке и настройке Varnish, чтобы сделать магазин Magento очень быстрым.

Настройка Varnish для кеширования Magento 2 на CentOS 7

Скорость страницы или время загрузки имеют решающее значение для успеха вашего интернет-магазина. Время загрузки - это общее количество времени, которое требуется для загрузки содержимого на определенной странице. Чем больше время загрузки, тем ниже коэффициент конверсии. Это также один из наиболее важных факторов, которые 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.

/etc/nginx/conf.d/example.com.conf

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 по умолчанию . Прокомментируйте или удалите следующие строки:

/etc/nginx/nginx.conf
 
...
# 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 часть из выделенной желтым цветом строки:

/etc/varnish/default.vcl
 
...
.probe = {
     # .url = "/pub/health_check.php";
     .url = "/health_check.php";
     .timeout = 2s;
     .interval = 5s;
     .window = 10;
     .threshold = 5;
}
... 


По умолчанию Varnish прослушивает порт 6081 , и нам нужно изменить его на 80 :

/etc/varnish/varnish.params
 
VARNISH_LISTEN_PORT=80
 


Как только вы закончите с модификациями, запустите и включите службу Varnish:
 

sudo systemctl enable varnish sudo systemctl start varnish 


Вы можете использовать этот varnishlog инструмент для просмотра веб-запросов в реальном времени и для отладки Varnish.
 

Вывод

В этом уроке мы показали вам, как ускорить работу вашего приложения Magento, реализовав Varnish как кеш-сервер страниц.

Этот пост является частью статьи Как установить и настроить Magento 2 в серии CentOS 7 


    Комментарии

    Если у вас есть вопросы, не стесняйтесь оставлять комментарии ниже.

Загрузка комментариев...