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

Apache Centos 6.5 загружает только первый виртуальный хост

Как и в вопросе, загружается только первый виртуальный хост. Если я перейду ко второму домену, он просто перенаправит на первый домен. Я могу загрузить отдельные файлы во второй домен, но не могу загрузить индексный файл.

NameVirtualHost *:80
<VirtualHost *:80>
 ServerAdmin youremail@domain.com
 DocumentRoot /var/www/intranet/public_html
 ServerName employees.nationalpurchasingpartners.com
 ServerAlias employees.nationalpurchasingpartners.com
</VirtualHost>

<VirtualHost *:80>
 ServerAdmin youremail@domain.com
 DocumentRoot /var/www/procurement/public_html
 ServerName www.procurementnews.com
 ServerAlias procurementnews.com
</VirtualHost>

Я безрезультатно перешел по следующей ссылке.

http://wiki.apache.org/httpd/CommonMisconfigurations

Добавление вывода curl:

HTTP/1.1 200 OK
Server: Apache
Set-Cookie: COOKIE=10.5.19.235.1396565642197130; path=/
ETag: "AAAAUSZYEDQ"
Last-Modified: Thu, 06 Mar 2014 21:50:26 GMT
Set-Cookie: referrer=; path=/
Set-Cookie: t=d9979760bb8211e39a570015c5e70b87; path=/
Set-Cookie: referrer=procurementnews.com; path=/
Vary: Accept-Encoding,User-Agent
Cartoon: aalander4
Content-Type: text/html; charset=UTF-8
Date: Thu, 03 Apr 2014 22:54:02 GMT
X-Varnish: 1862602499
Age: 0
Via: 1.1 varnish
Connection: keep-alive

Выход httpd -S

httpd -S

*:80                   is a NameVirtualHost
     default server employees.nationalpurchasingpartners.com (/etc/httpd/conf/httpd.conf:1012)
     port 80 namevhost employees.nationalpurchasingpartners.com (/etc/httpd/conf/httpd.conf:1012)
             alias employees.nationalpurchasingpartners.com
     port 80 namevhost www.procurementnews.com (/etc/httpd/conf/httpd.conf:1019)
             alias procurementnews.com

Если вы настраиваете виртуальные хосты на основе имен, то, насколько я понимаю, это должно быть сделано следующим образом:

Отредактируйте свой httpd.conf так:

NameVirtualHost *:80
<VirtualHost employees.nationalpurchasingpartners.com:80>
 ServerAdmin youremail@domain.com
 DocumentRoot /var/www/intranet/public_html
 ServerName employees.nationalpurchasingpartners.com
</VirtualHost>

<VirtualHost procurementnews.com:80>
 ServerAdmin youremail@domain.com 
 DocumentRoot /var/www/procurement/public_html
 ServerName www.procurementnews.com
 ServerAlias procurementnews.com *.procurementnews.com
</VirtualHost>

А затем запустите:

# /etc/init.d/httpd restart

Если вы хотите протестировать его на той же машине, вам придется обновить сервер /etc/hosts файл и включите туда:

1.1.1.1 employees.nationalpurchasingpartners.com
2.2.2.2 procurementnews.com

Или убедитесь, что на вашем DNS-сервере установлены эти записи.

Пожалуйста, обновите, работает он или нет.

Содержит ли ваша глобальная конфигурация (что-либо помимо VirtualHost) то же имя сервера? Вы можете добавить определение файла журнала для своей глобальной конфигурации и по одному для каждого из ваших виртуальных хостов, чтобы увидеть, какой трафик обслуживается каждым из них.

Сделайте резервную копию всех ваших файлов конфигурации перед тем, как что-либо тестировать, и всегда используйте «configtest», прежде чем пытаться применить какие-либо изменения.

В httpd.conf:

CustomLog logs/default_access_log combined

А затем в определении VirtualHost добавьте запись CustomLog для каждого:

<VirtualHost *:80>
 ServerAdmin youremail@domain.com
 DocumentRoot /var/www/intranet/public_html
 ServerName employees.nationalpurchasingpartners.com
 ServerAlias employees.nationalpurchasingpartners.com  # this entry is redundant

    CustomLog logs/employees.nationalpurchasingpartners.com_access_log combined

</VirtualHost>

<VirtualHost *:80>
 ServerAdmin youremail@domain.com
 DocumentRoot /var/www/procurement/public_html
 ServerName www.procurementnews.com
 ServerAlias procurementnews.com

    CustomLog logs/www.procurementnews.com_access_log combined

</VirtualHost>

Я вижу, что перед вашим сервером стоит Varnish. Вы также должны убедиться, что Varnish использует HTTP / 1.1 для правильной поддержки заголовков Host. Вы также можете включить ведение журнала в Varnish, чтобы видеть, что отправляется обратно в Apache.

Вы также можете зарегистрировать заголовок "Host", отправленный в Apache, скопировав строку LogFormat из объединенной в новую запись и добавив

\"%{Host}i\"

например

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\" \"%{Host}i\"" with_host

Затем измените приведенные выше записи Apache CustomLog, чтобы использовать «with_host» вместо «комбинированного».

Обязательно отмените изменения после тестирования, чтобы восстановить нормальный режим работы сервера.