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>
Apache и кэширующий прокси-сервер Varnish на Ubuntu 16.04
Метки:             

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *