关于子域配置的 VHost 和 DNS 条目的困惑(Apache)

关于子域配置的 VHost 和 DNS 条目的困惑(Apache)

我想在我的 Vserver 上配置一个子域。因此,我的 apache vhost 配置中有以下条目。我希望我的网站app1.example.com作为自己的网站运行,这样页面和文件就有域,例如app1.example.com/photo.jpgapp1.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 的通配符记录,则您不需要更具体的app1A 记录,通配符会处理该问题。用户的浏览器发送:

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 服务器 - 浏览器仍将发送适当的主机标头。

相关内容