В настоящее время я тестирую развертывание нескольких сайтов с одного сервера с одним 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-предостережения также заявляет следующее как несколько лучших практик, чтобы избежать проблем
милость, я пришел с миром! новое в конфигурации сервера :(