Apache虚拟托管在不同的域名和端口上



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

  • maindomain.com:80
  • 其他port.com:8080

每个指向VM IP的域,但显然是其他目录。

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

好:

  • maindomain.com:80返回Maindomain的索引
  • 其他port.com:8080返回其他港口索引

坏:

  • maindomain.com:8080返回其他港口索引
  • 其他port.com:80返回Maindomain的索引

如果我将两个都放在端口80上,每个端口都分开了,但是如果我做不同的端口,似乎Apache只是在乎端口。

我如何阻止访问maindomain.com:8080和其他port.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>

其他port.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>

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

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>

另一个具有名称和端口切换的一个。
顺便说一句,我在第一篇文章中提到的前两个.conf文件中离开了<VirtualHost *:80><VirtualHost *:8080>

最新更新