blog.example.com 的 httpd.conf / VirtualHost 配置問題
我有一個位於 /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 伺服器需要一些時間才能更新其記憶體。因此,這些更改可能需要一些時間。