Apache-2.2

blog.example.com 的 httpd.conf / VirtualHost 配置問題

  • December 9, 2010

我有一個位於 /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 連結仍然無法正常工作。


設置5

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>

設置6

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 伺服器,還必須為現有主機創建一個塊。此虛擬主機中包含的 ServerName 和 DocumentRoot 應與全域 ServerName 和 DocumentRoot 相同。首先在配置文件中列出此虛擬主機,以便它將充當預設主機。

編輯:

因此,主站點再次線上,我們應該假設在 Apache 方面一切正常。似乎我們沒有處理有關 HTTP/1.1 VHosts(基於名稱的虛擬主機)的問題,因為主站點和部落格都使用了相同的功能。

現在讓我們看看為什麼 blog.example.com 不起作用。您應該檢查 blog.example.com 的 DNS 記錄,因為它應該指向與 example.com 相同的地址

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

編輯 2

關於nslookup沒有為子域返回結果的內容,解釋了該問題。對 blog.example.com 的請求永遠不會到達您的 apache 網路伺服器,因為 DNS 伺服器不知道如何處理blog.example.com.

因此,關於我們所見所聞,您的 apache 配置似乎是正確的。在我們添加了它的 VirtualHost 後,首頁再次線上。所以,既然我相信你也做對blog.了。

no 之後的內容取決於域的 DNS 提供商。最簡單的方法是在 example.com 上放置一個萬用字元子域以重定向到您的網路伺服器。這會將任何請求重定向ANYTHING.example.com到您的網路伺服器,該伺服器使用您在 apache 中配置的 VirtualHosts 處理其餘請求。

請記住,DNS 伺服器需要一些時間才能更新其記憶體。因此,這些更改可能需要一些時間。

引用自:https://serverfault.com/questions/210351