不同域名和端口上的 Apache 虚拟主机
Apache Virtual Hosts on different domain names AND ports
我使用 Ubuntu 16.04 服务器 VM,我必须在其上配置以下域:
- maindomain.com:80
- otherport.com:8080
每个域都指向 VM 的 IP,但显然指向不同的目录。
当 VM 是 DNS 服务器时,我设法让 bind9 使这些域指向 VM 的 IP,我配置 Apache 得到以下结果:
好:
- maindomain.com:80 returns 主域索引
- otherport.com:8080 returns 其他端口的索引
差:
- maindomain.com:8080 returns 其他端口的索引
- otherport.com:80 returns 主域索引
如果我把两者都放在端口 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>
我使用 Ubuntu 16.04 服务器 VM,我必须在其上配置以下域:
- maindomain.com:80
- otherport.com:8080
每个域都指向 VM 的 IP,但显然指向不同的目录。
当 VM 是 DNS 服务器时,我设法让 bind9 使这些域指向 VM 的 IP,我配置 Apache 得到以下结果:
好:
- maindomain.com:80 returns 主域索引
- otherport.com:8080 returns 其他端口的索引
差:
- maindomain.com:8080 returns 其他端口的索引
- otherport.com:80 returns 主域索引
如果我把两者都放在端口 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.
<VirtualHost *:80>
和 <VirtualHost *:8080>