Настройте Magento 2 для использования Varnish на CentOS 7

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

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

Подготовка

Убедитесь, что вы следовали инструкциям из первого сообщения и у вас включен репозиторий EPEL .

Как это устроено

Varnish не поддерживает SSL, поэтому нам нужно использовать другую службу в качестве прокси завершения SSL, в нашем случае это будет Nginx .

Когда посетитель открывает ваш веб-сайт через HTTPS на порту 443 запрос будет обработан Nginx, который работает как прокси и передает запрос Varnish (через порт 80). Varnish проверяет, кэширован ли запрос или нет. Если он кэширован, Varnish вернет кешированные данные в Nginx без запроса к приложению Magento. Если запрос не кэширован, Varnish передаст запрос Nginx через порт 8080 который будет извлекать данные из Magento, а Varnish кэширует ответ.

Если посетитель откроет ваш сайт без SSL порт 80 то Varnish перенаправит его на HTTPS порт 443 URL.

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

/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 varnishsudo systemctl start varnish

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

Выводы

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

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

Этот пост является частью статьи Как установить и настроить Magento 2 в серии CentOS 7. Другие сообщения из этой серии:

Оставьте комментарий