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

Apache Config - странное поведение для порта и / или виртуального хоста

В настоящее время я тестирую развертывание нескольких сайтов с одного сервера с одним IP-адресом с помощью virtualmin / webmn. Серверы имен и некоторые общие записи A / AAAA уже настроены в диспетчере DNS. В настоящее время при создании новых виртуальных серверов webmin создает виртуальные хосты как (IP + название на основе конфигурации virtualHost):

на первом сайте /etc/apache2/sites-enabled/testdomain1.conf

 <VirtualHost 23.512.52.34:80>
        ServerName testdomain1.com
        ServerAlias *.testdomain1.com
        DocumentRoot /home/testuser2/public_html
        <Directory /home/testuser1/public_html>
            allow from All
            ...
        </Directory>
        ...
</VirtualHost>
<VirtualHost 23.512.52.34:443>
    ServerName testdomain1.com
    ...

а на втором сайте /etc/apache2/sites-enabled/testdomain2.conf

 <VirtualHost 23.512.52.34:80>
        ServerName testdomain2.com
        ServerAlias *.testdomain2.com
        DocumentRoot /home/testuser2/public_html
        <Directory /home/testuser1/public_html>
            allow from All
            ...
        </Directory>
        ...
</VirtualHost>
<VirtualHost 23.512.52.34:443>
    ServerName testdomain2.com
    ...

Однако, когда я захожу на любой из сайтов (testdomain1.com или testdomain2.com) из браузера, он просто перенаправляет меня на по умолчанию apache index.html хотя я уже отключил 000-default.conf и проверяя включенные виртуальные хосты, я вижу только 4 записи (2 для порта 80 и 2 для порта 443), которые соответствуют двум namedvhost testdomain1.com & testdomain2.com.

В качестве теста я попытался проверить /etc/apache2/ports.conf и явно добавил IP перед портом 80, чтобы отразить:

Listen 23.512.52.34:80
Listen 443

После изменения этого параметра сайты работают должным образом. Теперь я хотел бы спросить, почему это работает именно так, потому что у меня сложилось впечатление, что Listen 80 означает, что он прослушивает все IP-запросы через порт 80.

Кроме того, я нашел другой способ заставить его работать, используя * подстановочный знак для всех VirtualHost директивы (обычная конфигурация virtualHost на основе имени) и оставьте port.conf по умолчанию (Listen 80).

Образец:

 <VirtualHost *:80>
        ServerName testdomain2.com
        ServerAlias *.testdomain2.com
        DocumentRoot /home/testuser2/public_html
        <Directory /home/testuser1/public_html>
            allow from All
            ...
        </Directory>
        ...
</VirtualHost>
<VirtualHost *:443>
    ServerName testdomain2.com
    ...

Какой или какой способ лучше? Должен ли я просто использовать обычную конфигурацию VH на основе имени с подстановочным знаком? или придерживайтесь конфигурации webmin VH по умолчанию и просто вручную отредактируйте ports.conf?

В качестве примечания, я не собираюсь добавлять или редактировать интерфейс или IP-адреса на этом сервере в будущем. Я просто хотел понять это поведение как apache.org dns-предостережения также заявляет следующее как несколько лучших практик, чтобы избежать проблем

милость, я пришел с миром! новое в конфигурации сервера :(