記我的一次配置Apache伺服器的域名解析和泛域名解析過程
配置apache的多域名解析,需要用到下面的東西:
- C:\WINDOWS\system32\drivers\etc\hosts (DNS域名解析的檔案)
- Apache2.2.11\conf\httpd.conf
- Apache2.2.11\conf\extra\httpd-vhosts.conf
上面的檔案的用處後面會提到,先講講基本情況,客戶有兩個域名:
這兩個域名要繫結某伺服器上兩個網站,假設目錄為:
首先在apache的httpd.conf中將虛擬主機模組開啟,就是將前面的#號去掉:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
然後引入虛擬主機配置模組:
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
然後在httpd-vhosts.conf中寫入以下內容:
NameVirtualHost *:80
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/htdocs/yeboots.com"
ServerName *.yeboots.com
ErrorLog "logs/yeboots.com-error.log"
CustomLog "logs/yeboots.com-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
DocumentRoot "D:/htdocs/yecsc.com"
ServerName yecsc.com
ServerAlias *.yecsc.com
ErrorLog "logs/yecsc.com-error.log"
CustomLog "logs/yecsc.com-access.log" common
</VirtualHost>
便實現了多域名指向伺服器不同目錄。其中紅色部分是實現泛域名解析的方法。
注意點:
- 注意HOST檔案中的任意一項,都可能影響到你除錯本地的DNS和域名。
- ServerName項對應的內容是網站的域名,即yecsc.com,而www.yecsc.com只是泛域名的其中一種。只需要在ServerAlias中設定*.yecsc.com即可。
- 注意檢視每一個域名訪問對應的access.log檔案,可以檢視域名被訪問的情況來除錯。
- 要確定使用者已經進行了域名與IP的繫結!
- 網站不可能訪問網站根目錄的上級目錄中的內容。
- 調整本地HOST檔案之後,可以通過ping域名的方法來檢視本地DNS是否已經起效。
- 如果通過HOST,httpd.conf和httpd-vhosts.conf三者進行除錯之後,仍然有錯誤的話,一定是這三者某一環節出了問題,而不是任何詭異的其他問題。
推薦網址:
其中有一個問題好長時間沒有調試出來,最後找到的原因,就是下圖中的第二行:
<!--StartFragment -->
註釋掉之後,兩個網站終於可以各自訪問各自的目錄了。
所以要非常注意本機HOST檔案中對localhost的配置,否則會出莫名奇妙的狀況。