Поиск по сайту:

Как установить и настроить Varnish Cache 6 с Nginx на CentOS 8


На этой странице

  1. Предпосылки
  2. Установка и настройка веб-сервера Nginx
  3. Установить кеш Varnish
  4. Настройка Varnish для Nginx
  5. Настройка SELinux и брандмауэра
  6. Проверка кэша Varnish
  7. Заключение

Varnish Cache — это бесплатный ускоритель HTTP с обратным прокси-сервером с открытым исходным кодом для веб-сайтов и API. Его можно установить в качестве обратного прокси-сервера перед любым веб-сервером, работающим по протоколу HTTP. Он находится между веб-сервером и браузером и сохраняет веб-страницы, файлы cookie и другие данные в памяти. Этот кеш будет использоваться для обслуживания всех будущих запросов точно такого же контента. Это увеличит нагрузку на веб-приложение и повысит производительность веб-сервера более чем в 300 раз.

В этом руководстве мы настроим сервер Nginx в качестве внутреннего сервера и настроим его для прослушивания порта 8080, а затем настроим кеш Varnish для прослушивания HTTP-порта 80 по умолчанию.

Предпосылки

  • Сервер под управлением CentOS 8.
  • Пароль root настраивается на сервере.

Установка и настройка веб-сервера Nginx

Во-первых, вам нужно будет установить веб-сервер Nginx в вашей системе. Вы можете установить его с помощью следующей команды:

dnf install nginx -y

После установки запустите службу Nginx и включите ее запуск при перезагрузке системы с помощью следующей команды:

systemctl start nginx
systemctl enable nginx

По умолчанию Nginx прослушивает порт 80. Поэтому вам нужно настроить Nginx для прослушивания порта 80. Вы можете настроить его, отредактировав файл конфигурации Nginx по умолчанию:

nano /etc/nginx/nginx.conf

Найдите следующие строки:

        listen       80 default_server;
        listen       [::]:80 default_server;

И замените их следующими строками:

        listen       8080 default_server;
        listen       [::]:8080 default_server;

Сохраните и закройте файл, когда закончите. Затем перезапустите службу Nginx, чтобы применить изменения:

systemctl restart nginx

На данный момент веб-сервер Nginx установлен и прослушивает порт 8080. Вы можете проверить это с помощью следующей команды:

netstat -tpln | grep 8080

Вы должны получить следующий результат:

tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      30367/nginx: master 
tcp6       0      0 :::8080                 :::*                    LISTEN      30367/nginx: master 

Установить кеш Varnish

По умолчанию пакет Varnish доступен в репозитории CentOS 8 по умолчанию. Вы можете установить его, просто выполнив следующую команду:

dnf module install varnish

После установки запустите службу Varnish с помощью следующей команды:

systemctl start varnish

Вы также можете проверить установленную версию кеша Varnish с помощью следующей команды:

varnishd -V

Вы должны увидеть следующий вывод:

varnishd (varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91)
Copyright (c) 2006 Verdens Gang AS
Copyright (c) 2006-2018 Varnish Software AS

Настроить Varnish для Nginx

Затем вам нужно будет настроить лак для работы на порту 80 для получения HTTP-запросов от клиентов. Вы можете настроить его, отредактировав файл конфигурации Varnish по умолчанию:

systemctl edit --full varnish

Найдите следующую строку:

ExecStart=/usr/sbin/varnishd -a :6081 -f /etc/varnish/default.vcl -s malloc,256m

И замените его следующей строкой:

ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Сохраните и закройте файл, когда закончите.

Далее вам нужно будет определить внутренний сервер для Varnish. Вы можете сделать это, отредактировав основной файл конфигурации Varnish /etc/varnish/default.vcl:

nano /etc/varnish/default.vcl

Измените следующие строки:

backend myserver {
    .host = "127.0.0.1";
    .port = "8080";
}

Сохраните и закройте файл, когда закончите. Затем перезагрузите демон systemd с помощью следующей команды:

systemctl daemon-reload

Затем перезапустите службу Varnish и включите ее запуск при перезагрузке системы с помощью следующей команды:

systemctl restart varnish
systemcl enable varnish

Вы также можете проверить статус Varnish с помощью следующей команды:

systemctl status varnish

Вы должны получить следующий результат:

? varnish.service - Varnish Cache, a high-performance HTTP accelerator
   Loaded: loaded (/etc/systemd/system/varnish.service; disabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-08-29 09:36:58 EDT; 12s ago
  Process: 30421 ExecStart=/usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m (code=exited, status=0/SUCCESS)
 Main PID: 30424 (varnishd)
    Tasks: 217
   Memory: 91.8M
   CGroup: /system.slice/varnish.service
           ??30424 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m
           ??30434 /usr/sbin/varnishd -a :80 -f /etc/varnish/default.vcl -s malloc,256m

Aug 29 09:36:57 centos8 systemd[1]: Starting Varnish Cache, a high-performance HTTP accelerator...
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30424]: Version: varnish-6.0.2 revision 0458b54db26cfbea79af45ca5c4767c7c2925a91
Aug 29 09:36:58 centos8 varnishd[30424]: Platform: Linux,4.18.0-193.6.3.el8_2.x86_64,x86_64,-junix,-smalloc,-sdefault,-hcritbit
Aug 29 09:36:58 centos8 varnishd[30421]: Debug: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) Started
Aug 29 09:36:58 centos8 varnishd[30424]: Child (30434) said Child starts
Aug 29 09:36:58 centos8 systemd[1]: Started Varnish Cache, a high-performance HTTP accelerator.

Теперь вы можете проверить прослушиваемый порт Nginx и Varnish с помощью следующей команды:

netstat -tpln | grep 80

Вы должны увидеть следующий вывод:

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      30424/varnishd      
tcp        0      0 0.0.0.0:8080            0.0.0.0:*               LISTEN      30367/nginx: master 
tcp6       0      0 :::80                   :::*                    LISTEN      30424/varnishd      
tcp6       0      0 :::8080                 :::*                    LISTEN      30367/nginx: master 

Настройте SELinux и брандмауэр

По умолчанию SELinux включен в CentOS 8. Поэтому вам нужно настроить SELinux для Varnish. Вы можете настроить его с помощью следующей команды:

setsebool -P httpd_can_network_connect 1

Далее вам нужно будет разрешить порт 80 через firewalld. Вы можете сделать это с помощью следующей команды:

firewall-cmd --permanent --zone public --add-port 80/tcp
firewall-cmd --reload

Как только вы закончите, вы можете перейти к следующему шагу.

Тестовый кеш Varnish

На этом этапе кеш Varnish установлен и настроен с помощью веб-сервера Nginx. Теперь пришло время проверить, работает ли кеш Varnish или нет.

Вы можете проверить это с помощью команды curl, как показано ниже:

curl -I http://localhost

Вы должны увидеть следующий вывод:

																																																																																																																																																																																																																																																																																																																																																																		
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Sat, 29 Aug 2020 13:53:44 GMT
Content-Type: text/html; charset=UTF-8
X-Powered-By: PHP/7.2.24
X-Varnish: 32800
Age: 0
Via: 1.1 varnish (Varnish/6.0)
Accept-Ranges: bytes
Connection: keep-alive

Заключение

Поздравляем! вы успешно установили Varnish Cache с Nginx на CentOS 8. Надеюсь, вы также сможете легко настроить Varnish cache с веб-сервером Apache. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.