不同域名和端口上的 Apache 虚拟主机

Apache Virtual Hosts on different domain names AND ports

我使用 Ubuntu 16.04 服务器 VM,我必须在其上配置以下域:

每个域都指向 VM 的 IP,但显然指向不同的目录。

当 VM 是 DNS 服务器时,我设法让 bind9 使这些域指向 VM 的 IP,我配置 Apache 得到以下结果:

好:

差:

如果我把两者都放在端口 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>

我设法完成了它,但我认为它更像是一个肮脏的 hack,而不是一个实际的解决方案。我又做了两个这样的虚拟主机:

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>

另一个调换了名称和端口。
顺便说一下,我在第一个 post.

中提到的前两个 .conf 文件中留下了 <VirtualHost *:80><VirtualHost *:8080>