Varnish – это прокси-сервер, ориентированный на кеширование http-запросов. Он разработан как ускоритель http и может действовать как реверс-прокси для вашего веб-сервера (Apache или Nginx). Varnish используется на таких сайтах, как Википедия, The Guardian и The New York Times.
Рассмотрим как установить и настроить http-ускоритель Varnish в качестве обратного прокси-сервера для Apache. Наш веб-сервер Apache будет работать на нестандартном порту (мы установим порт 8080), а Varnish будет работать на порту 80 и переадресововать запрос Apache. В качестве операционной системы будем использовать Ubuntu Server 16.04.
1. Установим Apache
sudo apt update sudo apt install -y apache2
После завершении установки запустим Apache и включим его автоматический старт при загрузке системы.
systemctl start apache2 systemctl enable apache2
Пропишем разрешения на доступ к портам ssh, http и https на фаерволе.
ufw allow ssh ufw allow http ufw allow https
и включим сам фаервол
ufw enable
2. Изменим порт Apache
Перейдите в каталог конфигурации Apache.
cd /etc/apache2
Найдем и заменим порт «80» на «8080» в файле ports.conf и в файлах из каталога sites-available
sed -i -e 's/80/8080/g' ports.conf sed -i -e 's/80/8080/g' sites-available/*
Проверим конфигурацию и если нет ошибок – перезагрузим Apache
apachectl configtest systemctl restart apache2
Готово, Apache работает на порту 8080!
3. Varnish
Установим Varnish из репозитория Ubuntu.
sudo apt install -y varnish
Запустим Varnish и пропишем его запуск при старте системы
systemctl start varnish systemctl enable varnish
По умолчанию он работает на порту «6081» для общего доступа и «6082» для localhost. Проверьте это, используя команду netstat -plntu.
4. Настройка Varnish как обратный прокси для Apache.
cd /etc/varnish/ cp default.vcl default.vcl.aseli
nano default.vcl
Проверим в конфиге настройки пункта backend default. Бэкэнд для нашей установки – Apache, и он работает на порту 8080. Таким образом, конфигурация должна быть следующей:
backend default { .host = "127.0.0.1"; .port = "8080"; }
Сохраним и выйдем.
Затем нам нужно изменить порт 6081 на порт 80.
cd /etc/default/ nano varnish
Измените конфигурацию как показано ниже:
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/default.vcl \ -S /etc/varnish/secret \ -s malloc,256m"
Сохраним и выйдем.
cd /lib/systemd/system/ nano varnish.service
В строке «ExecStart» измените команду запуска varnish, как показано ниже.
ExecStart=/usr/sbin/varnishd -j unix,user=vcache -F -a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s malloc,256m
Перезагрузите systemd и перезапустите varnish.
systemctl daemon-reload systemctl restart varnish
netstat -plntu
5. Тест
curl -I nash_site
Как видим, отвечает Varnish. Проверим зайдя через браузер.
В случае если на сервере не один сайт, а например, два, отредактируем файл /etc/apache2/sites-available/000-default.conf или создадим новый. В последнем случае нужно будет создать симлинк на каталог /etc/apache2/sites-enabled
<VirtualHost *:8080> Servername site1.com DocumentRoot /var/www/site1 ErrorLog ${APACHE_LOG_DIR}/error.site1.log CustomLog ${APACHE_LOG_DIR}/access.site1.log combined </VirtualHost> <VirtualHost *:8080> Servername site2.com DocumentRoot /var/www/site2 ErrorLog ${APACHE_LOG_DIR}/error.site2.log CustomLog ${APACHE_LOG_DIR}/access.site2.log combined </VirtualHost>