Как установить и настроить Varnish Cache 6 с Nginx на CentOS 8
На этой странице
- Предпосылки
- Установка и настройка веб-сервера Nginx
- Установить кеш Varnish
- Настройка Varnish для Nginx
- Настройка SELinux и брандмауэра
- Проверка кэша Varnish
- Заключение
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. Не стесняйтесь спрашивать меня, если у вас есть какие-либо вопросы.