示例1:基于ip
編輯配置文件,切換到最后一行,增加:
<VirtualHost 192.168.1.117:80>
ServerName web1.ams.com
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.115:80>
ServerName web2.ams.com
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
[root@bluee htdocs]# service httpd configtest
Warning: DocumentRoot [/vhosts/web1/htdocs] does not exist
Warning: DocumentRoot [/vhosts/web2/htdocs] does not exist
Syntax OK
[root@bluee htdocs]#
提示說虛擬主機配置文件不存在,于是創建:
[root@bluee htdocs]# cd
[root@bluee ~]# mkdir -pv /vhosts/{web1,web2,web3,web4}/htdocs
mkdir: created directory `/vhosts'
mkdir: created directory `/vhosts/web1'
mkdir: created directory `/vhosts/web1/htdocs'
mkdir: created directory `/vhosts/web2'
mkdir: created directory `/vhosts/web2/htdocs'
mkdir: created directory `/vhosts/web3'
mkdir: created directory `/vhosts/web3/htdocs'
mkdir: created directory `/vhosts/web4'
mkdir: created directory `/vhosts/web4/htdocs'
[root@bluee ~]#
先給前2個創建網頁文件:web1,web2
[root@bluee ~]# vim /vhosts/web1/htdocs/index.html
[root@bluee ~]# vim /vhosts/web2/htdocs/index.html
[root@bluee ~]#
[root@bluee ~]# httpd -t
Syntax OK
[root@bluee ~]#
語法測試,ok
再加個ip地址:192.168.1.118/16
[root@bluee ~]# ip addr add 192.168.1.118/16 dev eth0
[root@bluee ~]# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:c1:45:55 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.117/24 brd 192.168.1.255 scope global eth0
inet 192.168.1.118/16 scope global eth0
inet6 fe80::20c:29ff:fec1:4555/64 scope link
valid_lft forever preferred_lft forever
3: pan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
link/ether e6:63:37:68:33:9d brd ff:ff:ff:ff:ff:ff
[root@bluee ~]#
reload
瀏覽器訪問:http://192.168.1.117/ 顯示page at web1
http://192.168.1.118/ 顯示page at web2
都沒問題。
示例2:基于port
再增加一個虛擬主機,端口改為:8080
并監聽;
<VirtualHost 192.168.1.117:80>
ServerName web1.ams.com
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.118:80>
ServerName web2.ams.com
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
<VirtualHost 192.168i.1.118:8080>
ServerName web3.ams.com
DocumentRoot "/vhosts/web3/htdocs"
</VirtualHost>
#Listen 12.34.56.78:80
Listen 80
Listen 8080 這項改下,表示監聽所有地址的8080端口
再創建個網頁文件:web3
[root@bluee ~]# vim /vhosts/web3/htdocs/index.html
[root@bluee ~]# service httpd restart
訪問 http://192.168.1.118:8080/ 沒問題。
示例3:基于hostname
先啟用這項:
NameVirtualHost 192.168.1.117:80 這項也改為80,保持一致。
表示基于主機名的虛擬主機;不過 httpd2.4不需要了
ip全改為:192.168.1.117:80
<VirtualHost 192.168.1.117:80>
ServerName web1.ams.com
DocumentRoot "/vhosts/web1/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.117:80>
ServerName web2.ams.com
DocumentRoot "/vhosts/web2/htdocs"
</VirtualHost>
<VirtualHost 192.168.1.117:80>
ServerName web3.ams.com
DocumentRoot "/vhosts/web3/htdocs"
</VirtualHost>
[root@bluee ~]# httpd -t
Syntax OK
[root@bluee ~]#
檢查下沒錯誤
service httpd restart
再找臺主機使用curl命令訪問:
做host綁定:
vim /etc/hosts
把ip地址以及這幾個主機名添加進來:(確保這臺主機以及服務器端主機的iptables,selinux全部關掉,我老是忘!)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.1.117 web1.ams.com web2.ams.com web3.ams.com
保存退出。
reload
再使用curl命令訪問:
[root@Ams ~]# curl http://web3.ams.com
page at web3
[root@Ams ~]# curl http://web2.ams.com
page at web2
[root@Ams ~]# curl http://web1.ams.com
page at web1
[root@Ams ~]#
可以訪問到。
還可以添加日志:
注意字母大小寫,引號等問題,錯一個字符,啟動不起來。。。
<VirtualHost 192.168.1.117:80>
ServerName web1.ams.com
DocumentRoot "/vhosts/web1/htdocs"
CustomLog logs/web1_access_log combined
</VirtualHost>
<VirtualHost 192.168.1.117:80>
ServerName web2.ams.com
DocumentRoot "/vhosts/web2/htdocs"
CustomLog logs/web2_access_log combined
</VirtualHost>
<VirtualHost 192.168.1.117:80>
ServerName web3.ams.com
DocumentRoot "/vhosts/web3/htdocs"
CustomLog logs/web3_access_log combined
</VirtualHost>
我們多訪問幾次:
[root@Ams ~]# curl http://web1.ams.com
page at web1
[root@Ams ~]# curl http://web2.ams.com
page at web2
[root@Ams ~]# curl http://web3.ams.com
page at web3
[root@Ams ~]# curl http://web2.ams.com
page at web2
[root@Ams ~]# curl http://web1.ams.com
page at web1
[root@Ams ~]#
查看服務器端日志:
已經有了。每個虛擬機使用各自獨立的訪問日志
[root@bluee ~]# ls /var/log/httpd/
access_log error_log web1_access_log web2_access_log web3_access_log
[root@bluee ~]#
原創文章,作者:mississippi,如若轉載,請注明出處:http://www.www58058.com/28014