我想在我的 Vserver 上配置一个子域。因此,我的 apache vhost 配置中有以下条目。我希望我的网站app1.example.com
作为自己的网站运行,这样页面和文件就有域,例如app1.example.com/photo.jpg
或app1.example.com/blog/
。
<VirtualHost *:80>
DocumentRoot /var/www/app1
ServerName app1.example.com
<VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/example
ServerName example.com
<VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/wildcard
ServerName other.example.com
ServerAlias *.example.com
<VirtualHost>
但是为什么我还需要这样的 DNS?我不是已经在 vhost 配置中设置了吗?
Host Type Destination
app1 A 78.xx.xx.xx (my IP)
* A 78.xx.xx.xx
或者我需要将目的地指向这样的目录:app1.example.com 谢谢您的建议!
答案1
如果您有指向子域名 IP 的通配符记录,则您不需要更具体的app1
A 记录,通配符会处理该问题。用户的浏览器发送:
Host: app1.example.com
当它对该域发出请求时,Apache 就知道客户端想要哪个域。通配符记录将告诉浏览器将该请求发送到您的服务器。
答案2
嗯,我认为问题的一部分可能是在设置 DocumentRoot 时使用了 '='。除非这是一些很少使用的替代语法,否则 apache 文档似乎建议使用类似 'DocumentRoot /foo/bar' 的内容,其中 /foo/bar 是您想要的文档根目录。请参阅http://httpd.apache.org/docs/2.1/mod/core.html#documentroot。关于您的 DNS 问题,用户的浏览器将发送主机标头,如果您正确设置了 NameVirtualHosts 指令,则会导致使用具有匹配 ServerName 或 ServerAlias 的 VirtualHost 指令。您可以使用通配符“*”条目或特定条目或两者来配置您的 DNS 服务器 - 浏览器仍将发送适当的主机标头。