blog.example.com的httpd.conf / VirtualHostconfiguration问题

我有一个网站位于/ var / www / html /哪些工作正常。

我正在尝试通过在httpd.conf中添加以下条目来设置“blog.example.com”

Setup1 <VirtualHost *:80> DocumentRoot /var/www/html/blog ServerName blog.example.com </VirtualHost> 

但是现在主站点停止工作,并且在http://blog.example.com也无法访问

 root@server [~]# apachectl configtest Syntax OK 

我尝试了以下,但它也没有工作

 Setup2 NameVirtualHost *:80 <VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/html/blog </VirtualHost> 

(这是链接到https://serverfault.com/questions/209945/setting-up-blog-at-blog-example-com-httpd-conf-issue )

该网站在RedHat / CentOS系统上以用户“apache”运行。

我也尝试了以下,没有运气

 Setup3 NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /var/www/html ServerName www.example.com </VirtualHost> <VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/html/blog </VirtualHost> 

这是更好的,因为我能够访问该网站,但blog.example.com链接仍然不起作用。


Setup5

 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/html/blog <Directory /var/www/html/blog/> Options None AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> 

Setup6

 NameVirtualHost *:80 <VirtualHost *:80> ServerName www.example.com DocumentRoot /var/www/html </VirtualHost> <VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/html-blog </VirtualHost> 

在这两种情况下,nslookup显示如下:

 root@server [/etc/httpd/conf]# nslookup > example.com Server: 67.99.9.90 Address: 67.99.9.90#53 Non-authoritative answer: Name: example.com Address: 174.999.99.99 > blog.example.com Server: 67.99.9.90 Address: 67.99.9.90#53 ** server can't find blog.example.com: NXDOMAIN 

您应该检查基于名称的虚拟主机支持的Apache文档,以便您阅读以下内容:

主人走开

如果要将虚拟主机添加到现有Web服务器,则还必须为现有主机创build一个块。 此虚拟主机中包含的ServerName和DocumentRoot应与全局ServerName和DocumentRoot相同。 首先在configuration文件中列出这个虚拟主机,以便它作为默认主机。

编辑:

因此,主网站在线上,我们应该在阿帕奇方面假设一切正常。 看来我们没有处理HTTP / 1.1 VHosts(基于名称的虚拟主机)的问题,因为主站点和博客也使用相同的function。

现在让我们来看看为什么blog.example.com不起作用。 您应该检查blog.example.com的DNSlogging,因为它应该指向与example.com相同的地址

 $ nslookup > example.com [...] > blog.example.com [...] > quit 

编辑2

关于什么nslookup没有返回子域的结果的问题进行了解释。 由于DNS服务器不知道如何处理blog.example.com所以对blog.example.com的请求永远不会到达您的apache web服务器。

所以关于我们所看到和知道的,你的apacheconfiguration似乎是正确的。 添加VirtualHost后,主页面再次联机。 所以,因为我相信你做了正确的blog. 太。

接下来的否取决于域的DNS提供商。 最简单的事情是将example.com上的通配符子域redirect到您的networking服务器。 这将redirectANYTHING.example.com任何请求到您的networking服务器,该networking服务器使用您在apache中configuration的虚拟主机来处理剩余的请求。

记住DNS服务器需要一段时间才能更新caching。 所以这些改变可能需要一些时间。

第一个问题是你如何定义“非function”? 你从服务器得到错误吗? (什么错误?)

您是否获取主页而不是博客页面? (有些东西可能会被命名为VirtualHostsconfiguration中断)

你没有连接? (DNS问题?Apache日志中是否显示任何内容?)

一些想法… A)你可以尝试明确添加一个目录指令的博客子树,看看是否有所作为。

 <Directory /var/www/html/blog/> AllowOverride None Order allow,deny Allow from all </Directory> 

A)如果您将博客树移动到目录结构上,则发生什么情况?/ var / www / html-blog并更新您的httpd.conf以反映它。

 <VirtualHost *:80> ServerName blog.example.com DocumentRoot /var/www/html-blog <Directory /var/www/html-blog/> Options None AllowOverride None Order allow,deny Allow from all </Directory> </VirtualHost> 

在主要的httpconfiguration中,你有没有行:

NameVirtualHost *

取消注释? 其他虚拟主机将无法工作。