我有一个带有一些网站的服务器apache2。
其中之一在http和https上均提供 其他所有服务器均仅位于http
上我从公司的一位前员工那里继承了这种糟糕的局面,但我受到了困扰,请不要怪我
如果我尝试通过其他网站之一的https访问,我认为apach2正在提供通过https访问的第一台(也是唯一的)服务器,即使该服务器具有不同的域。
如果我访问https://blablbalca.com,则apache2知道blablbalca.com不在https上提供,但没有给我404,它将在https://anotherwebsite.com上提供服务
哪个指令告诉apache在缺少定义的情况下自动为“第一个”服务?
如何解决?
编辑:我发现了一种更优雅,更笼统的方式来表达我的问题:
如果不是真正从服务器提供指向相同IP的域,如何避免apache2为随机虚拟主机服务?
答案 0 :(得分:1)
您可以命名最佳虚拟主机,并设置ServerName
和ServerAlias
以匹配每个网站。此外,如果您希望blablbalca.com在通过HTTP访问时返回错误,则必须在your_site.conf
中设置虚拟主机,以处理来自https端口的流量。就像进行重定向或显示错误页面一样。
The default configuration file that deals with the incoming connection from a domain name that is not on the server or without domain name at all (direct IP connection):
For port 80:
<VirtualHost *:80>
ProxyPass "/" "http://your/path/here"
ProxyPassReverse "/" "http://your/path/here"
</VirtualHost>
For port 443 (SSL):
<VirtualHost *:443>
ProxyPass "/" "http://your/path/here"
ProxyPassReverse "/" "http://your/path/here"
</VirtualHost>
The website with a domain:
<VirtualHost *:80>
ServerName yoursite.com
ServerAlias www.yoursite.com
ServerAdmin none@webhost.com
DocumentRoot /var/www/yourWebsite
</VirtualHost>
在这种情况下,我将删除很多指令,而仅保留我们关注的指令。