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

时间:2017-04-30 03:49:47

标签: apache port virtualhost domain-name

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

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

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

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

好:

  • maindomain.com:80返回maindomain的索引
  • otherport.com:8080返回otherport的索引

为:

  • maindomain.com:8080返回otherport的索引
  • otherport.com:80返回maindomain的索引

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

1 个答案:

答案 0 :(得分:0)

我设法完成了它,但我认为它更像是一个肮脏的黑客,而不是一个真正的解决方案。我再制作了两个虚拟主机:

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文件中。