2017-01-20 3 views
0

Я пытаюсь запустить Varnish для двух доменов и каждого из них на разных IP-адресах и настроен на свой собственный .VCL-файл. Мне удалось записать все файлы конфигурации, чтобы Varnish прослушивал каждый IP-адрес; так что Apache будет слушать Larnish на двух портах. Все выглядит великолепно, НО! Когда я загружаю первый домен в браузере, он пересылает (302) во второй домен. Моя предыдущая установка работала как первый домен для работы без лака и второго домена с лаком. Можно ли предложить подход или отладочный подход. 10xЛак с несколькими сайтами и несколькими IP-адресами

+0

Звучит так, будто вы слишком сложны. Зачем настраивать Varnish для прослушивания на разных IP-адресах? Вам нужны два определения бэкэнда в Varnish (не прослушивание), для каждого IP-адреса вашего бэкэнд-сервера. Если вы получите перенаправление, похоже, что все находится на одном сервере: D затем просто настройте один backend 127.0.0.1 и сделайте условное включение VCL на основе значения переменной хоста HTTP https://www.getpagespeed.com/server-setup/varnish/varnish-virtual-hosts –

+0

Два IP-адреса предназначены специально! В разделе «условное включение VCL» вы имеете в виду размещение ifs (req.http.host) в каждом субпользователе с использованием одного .vcl-файла? Это усложняет ситуацию, поскольку каждый домен использует разные правила в Wordpress. Первый домен имеет формы входа и js, которые не работают хорошо под Varnish, поэтому я стараюсь сохранить два разных .vcl, чтобы упростить настройку и отладку. В случае, если три домена, один .vlc-default будет даже более сложным. У меня уже есть два бэкэнда, которые прослушивают каждый IP, но один перенаправляет на второй. – user2047710

+0

В более ранних версиях Varnish on CentoS было намного проще сделать ту же установку. Теперь я пытаюсь сделать то же самое с Varnish 4 на Debian и сталкиваться с несколькими заблуждениями. Должен ли я запускать второй экземпляр лака для второго домена ??? – user2047710

ответ

0

У меня эта настройка работает без проблем. Я использую один файл vcl (логика на обоих сайтах/backend почти одинакова). Сервер имеет несколько IP-адресов, apache использует их все, и он обслуживает разные сайты на разных IP-адресах. Некоторые из ip имеют виртуальные хосты на них.

Сначала проверьте, действительна ли ваша установка Apache и нет ли переадресаций.

curl -I -L http://hostname1.com 

Во-вторых, в вашем VCL, определяют движки (первый пример, если backend1 является VirtualHost, example2, если backend2 не ВХост и доступна на этом IP)

backend backend1 { 
    .host = "127.0.0.1"; 
    .port = "81"; 
    .host_header = "hostname1.com"; 
} 

backend backend2 { 
    .host = "192.168.1.1"; 
    .port = "80"; 
} 

В-третьих, вы vcl_recv у вас будет что-то вроде этого:

if (req.http.host ~ "^(www\.)?hostname1\.com$") { 
    set req.http.host = "hostname1.com"; 
    set req.backend_hint = backend1; 

    } 
    elseif (req.http.host ~ "^(www\.)?hostname2\.com$") { 
    set req.http.host = "hostname2.com"; 
    set req.backend_hint = backend2; 
    } 

Всё.

Смежные вопросы