4

Я настроил виртуальный хост Apache 2 этим методом.

в /etc/apache2/sites-available я создал dummy_site_1.conf

dummy_site_1.conf

<VirtualHost local.dummy_site_1:80>
    ServerName local.dummy_site_1
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dummy_site_1
    ErrorLog /var/log/apache2/dummy_site_1__error.log
    TransferLog /var/log/apache2/dummy_site_1__access.log
    <Directory /var/www/dummy_site_1>
        AllowOverride Options Limit None
        Options -Indexes FollowSymLinks
    Order deny,allow
    Allow from all
    </Directory>
    DirectoryIndex index.php
    #DISABLE HTTP TRACE
    #RewriteEngine On
    #RewriteCond %{REQUEST_METHOD} ^TRACE
    #RewriteRule .* - [F]
</VirtualHost>

Я также добавил эту строку в httpd.conf:

ServerName local.dummy_site_1

Теперь все работает с этой настройкой, я local.dummy_site_1 в URL и вижу свой сайт.

Проблема в том, когда я пытаюсь добавить другой конфиг сайта dummy_site_2.conf и создать примерно такие же настройки

dummy_site_2.conf

<VirtualHost local.dummy_site_2:80>
    ServerName local.dummy_site_2
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/dummy_site_2
    ErrorLog /var/log/apache2/dummy_site_2__error.log
    TransferLog /var/log/apache2/dummy_site_2__access.log
    <Directory /var/www/dummy_site_2>
        AllowOverride Options Limit None
        Options -Indexes FollowSymLinks
    Order deny,allow
    Allow from all
    </Directory>
    DirectoryIndex index.php
    #DISABLE HTTP TRACE
    #RewriteEngine On
    #RewriteCond %{REQUEST_METHOD} ^TRACE
    #RewriteRule .* - [F]
</VirtualHost>

Я также добавил эту строку в httpd.conf:

ServerName local.dummy_site_2

Я получаю эту ошибку:

user@host:/etc/apache2$ sudo /etc/init.d/apache2 restart
 * Restarting web server apache2                                                                                                                                                                     [Wed Sep 15 14:00:43 2010] [error] (EAI 5)No address associated with hostname: Could not resolve host name local.dummy_site_2 -- ignoring!
 ... waiting [Wed Sep 15 14:00:44 2010] [error] (EAI 5)No address associated with hostname: Could not resolve host name local.dummy_site_2 -- ignoring!

Зачем? я неправильно настраиваю?

2 ответа2

6

Вам не нужно ' ServerName local.dummy_site_2 ' в httpd.conf, так что уберите это, но вместо этого добавьте:

NameVirtualHost ip-address-of-server:80

Например: NameVirtualHost 192.168.1.10:80

После внесения изменений вам нужно будет перезапустить Apache.

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

ServerName local.dummy_site_1
ServerAlias *.local.dummy_site_1 local.dummy_site_1

а также

ServerName local.dummy_site_2
ServerAlias *.local.dummy_site_2 local.dummy_site_2

Снова перезапустите Apache, чтобы проверить изменения.

РЕДАКТИРОВАТЬ: Глупый я - только что обнаружил другую часть проблемы - ВСЕ ваши объявления VirtualHost должны использовать IP-адрес виртуального сервера - например:

<VirtualHost 192.168.1.10:80>
1

На самом деле, вы можете удалить IP-адрес и / или имя сайта в целом.

пример:

NameVirtualHost *:80
NameVirtualHost *:443

<VirtualHost *:80>
ServerAdmin emailaddress@domain.tld
DocumentRoot "/path/to/vhost/documents"
ServerName servername.domain.tld
ServerAlias serveralias.domain.tld
ErrorLog "/path/to/logfiles/servername.domain.tld-error.log"
CustomLog "/path/to/logfiles/servername.domain.tld-access.log" common
<Directory "/path/to/vhost/documents">
allow from all
Option +Indexes
</Directory>
</VirtualHost>

<VirtualHost *:443>
ServerAdmin emailaddress@domain.tld
DocumentRoot "/path/to/vhost/documents"
ServerName servername.domain.tld
ServerAlias serveralias.domain.tld
SSLEngine On
SSLCertificateFile /path/to/certificate/file.cert
SSLCertificateKeyFile /path/to/certificate/file.key
ErrorLog "/path/to/logfiles/servername.domain.tld-error.log"
CustomLog "/path/to/logfiles/servername.domain.tld-access.log" common
<Directory "/path/to/vhost/documents">
allow from all
Option +Indexes
</Directory>
</VirtualHost>

(Теперь давайте сделаем пример vhost в сочетании с mod_proxy; ip = numeric-octet, ниже)

<VirtualHost *:80>
ProxyPreserveHost Off
ProxyPass / http://ip.ip.ip.ip/
ProxyPassReverse / http://ip.ip.ip.ip/
ServerName servername.domain.tld
</VirtualHost>

По сути, до тех пор, пока ваши данные DNS совпадают с настроенными вами vhosts, все должно работать.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .