Виртуальные хосты Apache на разных доменных именах И портах

Я использую виртуальную машину сервера Ubuntu 16.04, на которой мне нужно настроить следующие домены:

  • maindomain.com:80
  • otherport.com:8080

Каждый домен указывает на IP-адрес виртуальной машины, но, очевидно, на другой каталог.

Мне удалось получить bind9, чтобы эти домены указывали на IP-адрес виртуальной машины, когда виртуальная машина является DNS-сервером, и я настроил Apache для получения следующих результатов:

Хороший:

  • maindomain.com:80 возвращает индекс основного домена
  • otherport.com:8080 возвращает индекс другого порта

Плохой:

  • maindomain.com:8080 возвращает индекс другого порта
  • otherport.com:80 возвращает индекс основного домена

Если я поставлю оба порта на порт 80, каждый будет разделен, но если я использую разные порты, кажется, что Apache просто заботится о порте.

Как я могу заблокировать доступ к maindomain.com:8080 и otherport.com:80?

файл maindomain.com.conf:

<VirtualHost maindomain.com:80>
    ServerAdmin webmaster@localhost
    ServerName maindomain.com
    ServerAlias www.maindomain.com maindomain.com
    DocumentRoot "/var/www/html/maindomain"
    <Directory /var/www/html/maindomain>
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

файл otherport.com.conf:

<VirtualHost otherport.com:80>
    ServerAdmin webmaster@localhost
    ServerName otherport.com
    ServerAlias www.otherport.com otherport.com
    DocumentRoot "/var/www/html/otherport"
    <Directory /var/www/html/otherport>
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

person ohemelaar    schedule 30.04.2017    source источник
comment
укажите <VirtualHost *:80> и <VirtualHost *:8080> с правильным ServerName, а также <VirtualHost *> как ловушку.   -  person Deadooshka    schedule 30.04.2017
comment
Хорошо, я попытался указать VirtualHost таким образом, но он все равно дает тот же результат. Что вы имеете в виду под правильным ServerName, что я неправильно ввел в конфигурацию? В чем идея ловушки?   -  person ohemelaar    schedule 01.05.2017
comment
есть некоторые проблемы с DNS с доменным именем в качестве параметра <VirtualHost>. Речь идет о тривиальной конфигурации на основе имени с VirtualHost по умолчанию, например <VirtualHost _default_:*>. Это будет работать, если не возникнет проблем с конфигурацией сети виртуальной машины.   -  person Deadooshka    schedule 01.05.2017


Ответы (1)


Мне удалось это сделать, но я думаю, что это скорее грязный хакер, чем реальное решение. Еще два виртуальных хоста я сделал вот так:

maindomain.com.trap.conf

<VirtualHost *:8080>
    ServerAdmin webmaster@localhost
    ServerName maindomain.com
    ServerAlias www.maindomain.com maindomain.com
    DocumentRoot "/var/www/html/maindomain"
    <Directory /var/www/html/maindomain>
        Require all denied
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

У другого были переключены имена и порт.
Между прочим, я оставил <VirtualHost *:80> и <VirtualHost *:8080> в первых двух файлах .conf, упомянутых в моем первом посте.

person ohemelaar    schedule 02.05.2017