Назад | Перейти на главную страницу

Конфигурация httpd vhosts (с Varnish) - 1 сервер / несколько доменов

Я читал несколько вопросов по этой теме, но мне кажется, что это не работает ...

У меня есть сервер под управлением CentOS с HTTPD, на котором запущен 1 веб-сайт под корневым каталогом httpd по умолчанию:

Listen 8080
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>`

Я также использую Varnish: Varnish прослушивает порт 80 и перенаправляет запросы на httpd, который прослушивает порт 8080

Теперь я хочу запустить второй домен на этом сервере, поэтому я добавил файл .conf в / etc / httpd / conf / со следующим:

<VirtualHost *:8080>
ServerAdmin root@localhost
DocumentRoot /var/www/vhosts/domainx.be
ServerName domainx.be
ErrorLog logs/domainx-error_log
CustomLog logs/domainx-access_log common
</VirtualHost>

Когда я применяю вышеизложенное, весь трафик (включая трафик корневого домена) направляется в domainx. Когда я меняю порт виртуального хоста на 80, domainx перенаправляется на корневой хост.

Это первый раз, когда я делаю это без установки чего-то вроде Plesk of Webmin, поэтому я не знаю, что делать дальше ...

Сделайте записи vhosts для каждого виртуального хоста, даже для «настоящего» сайта, и не забудьте указать ServerName. Это должно исправить вашу настройку Apache.

Лично я также всегда запускаю apache на 80-м порту 127.0.0.1 и Varnish на 80-м публичном IP-порту. Таким образом, у вас не будет проблем с $ _SERVER vars, думая, что Varnish работает на 8080-м порту.

  • Создайте виртуальный хост для вашего веб-сайта, который указывает на корень документа. Не забудьте добавить NameVirtualHost *:8080.

  • Поместите конфигурацию серверной части в один файл, а затем включите ее на основе запрошенного имени хоста:

       if (req.http.Host == "domainx.be") {
           include "/etc/varnish/domainx.be.vcl";
       }