使用虛擬主機必須要注釋掉httpd的主機模塊,即修改httd.conf的主配置文件,找到,將這段內容注釋掉就可以了。
apche的虛擬主機配置一共有三種,即基于IP、基于port、以及基于域名的。為了后面試驗,需要配置兩個IP地址(我主機現在的IP地址是10.10.50.100),命令如下:
#ip addr add 10.10.50.101/16 dev eth0
#ip addr add 10.10.50.102/16 dev eth0
關于如何配置IP地址,此處不再贅述,后面我會專門寫篇關于IP地址的文章。
第一種:基于IP
apache默然安裝的時候,主配置文件位于/etc/httpd/conf/下的httpd.conf,可以在該文件的最下面來添加虛擬主機,但是我習慣于重新建立一個虛擬主機配置文件,這樣方便與日后的管理操作。
1.創建虛擬主機配置文件
# mkdir /etc/httpd/conf.d/virtual.conf
2.編輯該文件,添加如下內容
ServerName www.vevb.net
DocumentRoot "/www/vevb.net"
ServerName www.companysz.com
DocumentRoot "/www/vevb.com"
------保存退出即可,這是最簡單的配置
3.創建跟目錄文件
#mkdir /www/{vevb.net,vevb.com}
4.在跟目錄文件下創建主頁文件,用于后面的訪問測試
#vi /www/vevb.com/index.html,添加一下內容
This is vevb test
保存退出。然后編輯另一個目錄下面的主頁文件
#vi /www/vevb.com/index.html,添加一下內容
This is vevb test
5.重啟httpd服務(重啟之前最好先檢查一下語法是否有問題httpd -t)
service httpd restart
6.客戶端訪問測試
分別在瀏覽器內輸入:
10.10.50.100和10.10.50.101
會看到我們之間定義的主頁。
第二種 基于端口Port的虛擬主機
同樣使用上面創建的vitual.conf作為配置文件,假設我們此時使用80和8080端口,IP地址為10.10.50.102
1.修改httpd的主配置文件,vi /etc/httpd/conf/httpd.conf
首先將Listen 80前面的注釋去掉,然后再添加一行Listen 8080,保存退出。
2.修改虛擬主機配置文件,添加如下內容
ServerName www.vevb.net
DocumentRoot "/www/vevb.net"
ServerName www.companysz.com
DocumentRoot "/www/vevb.com"
3.創建所需的根文件
#mkdir /www/{vevb.net,vevb.com}
4.創建各根文件的默認訪問頁面,創建過程同第一種步驟四,這是把里面的內容換成你能識別的就可以了。我使用的分別是vevb.net和vevb.com兩個表示符。
5.檢查語法
httpd -t
6.重啟服務
7.訪問測試
分別在瀏覽器上輸入10.10.50.102以及10.10.50.102:8080,因為瀏覽器默認是使用80端口,所以當訪問80端口的網站時可以不用指定端口。
第三種 基于域名的虛擬主機
1.基于域名的虛擬主機,首先要在虛擬配置文件中指定IP:PORT,即修改虛擬配置文件,在第一行添加NameVirtualHost 10.10.50.100:80
然后在下面添加以下信息
ServerName hello.vevb.net
DocumentRoot "/hello/vevb.net"
ServerName hello.vevb.com
DocumentRoot "/hello/vevb.com"
2.創建所需的跟文件目錄
mkdir /hello/{vevb.net,vevb.com}
3.編輯根文件目錄下面的主頁文件,參照上面的方法
4.修改客戶端主機的hosts文件,確保可以正常解析咱們設定的兩個域名
hosts文件位于/C/windows/Drivers/etc/hosts(好像是的,記得不太清楚了,童鞋們可以百度一下)
添加以下兩列
10.10.50.100 hello.vevb.net
10.10.50.100 hello.vevb.com
5.通過ping命令確保可以正常解析
即ping hello.vevb.net和ping hello.vevb.com都顯示是通的,且返回值為10.10.50.100即可。
6.重啟httpd服務
7.瀏覽器測試
分別在瀏覽器里輸入hello.vevb.net和hello.vevb.com然后查看主頁面是不是我們之前的標識頁面即可。
補充:
1.虛擬主機也支持訪問日志和錯誤日志的位置重定義,即只需要在DocumentRoot 下面添加進日志信息條目即可,比如我要讓hello.vevb.com的訪問日志和錯誤日志都重定位到/hello/vevb.com/log下面,需要添加這行
CutomLog "/hello.vevb.com/log" combined
ErrorLog "/hello/vevb.com/log"
保存退出之后,再創建vevb.com下面的log目錄即可。
2.虛擬主機也支持返回服務器的狀態信息
例如我要顯示服務器,只要在httpd的主配置文件中將這段信息的內容去掉注釋即可,將Allow from后面添加你的IP地址,這樣只允許你自己訪問查看。查看的方法:在瀏覽器輸入hello.vevb.com/server-status即可查看。即如果說Directory是定義了文件路徑的話,那么Location則定義的是URL路徑,任意一個路徑后面添加server-status都可以查看服務器信息。
3.虛擬主機同樣支持真實主機一樣的訪問限制