虛擬主機的實現

示例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

(0)
mississippimississippi
上一篇 2016-08-05
下一篇 2016-08-05

相關推薦

  • fstab配置文件、swap分區,文件關聯

    fstab配置文件、swap分區,文件關聯,lvm 掛載點和/etc/fstab ? 配置文件系統體系 ? 被mount、 fsck和其它程序使用 ? 系統重啟時保留文件系統體系 ? 可以在設備欄使用文件系統卷標 ? 使用mount -a 命令掛載/etc/fstab中的所有文件…

    Linux干貨 2016-09-01
  • 軟鏈接與硬鏈接的區別

      這兩牽扯到鏈接,那么先介紹以下鏈接。   在文件系統中,有一種可以把不同的文件相連接到一起的機制,這個機制叫做鏈接。通俗的話來說就是打開兩個不同的文件夾,其實進去的是同一個。它可以把一個文件用不同的名字和路徑來表示出來。系統通過inode(索引節點,文件唯一標識)來識別是否為同一個文件,無論系統上有有多少個鏈接,在磁盤上只有一個唯一的…

    2017-05-25
  • 第三周作業

    1、列出1、列出當前系統上所有已經登錄的用戶的用戶名,注意:同一個用戶登錄多次,則只顯示一次即可。[root@localhost ~]# who | cut -d ‘ ‘ -f1 | sort -u 2、取出最后登錄到當前系統的用戶的相關信息。[root@localhost ~]# who | tail -1 | export &am…

    Linux干貨 2017-12-16
  • web服務 初步

    Web Service初步 一、引言 Web服務也是一個C/S架構,服務器端就是一個進程,客戶端是一個瀏覽器。我們打開瀏覽器的時候,都會看到hppt,https的字樣,然后才是輸入網址,這兩個協議是web服務的應用層協議,用來實現某些具體應用的。像https,前面學習openssl的時候也接觸過,https=http+ssl。 web的傳輸層協議用到了tcp…

    Linux干貨 2016-12-09
  • 馬哥教育-第二周作業

    問題一:文件管理類命令 常規命令:mkdir、rmdir、stat、touch、copy、mv、rm (1).mkdir  創建目錄: 注意:路徑基名方為命令的作用對象;基名之前的路徑必須得存在; -p:自動按需創建父目錄; -v:顯示創建過程; -m 參數:直接給定所需權限; 例子:問題:創建 /tmp/x ; /tmp/x/y1 ; /tmp/…

    Linux干貨 2016-12-11
  • Linux文件管理相關及命令別名、執行狀態等

    Linux文件管理相關命令有:cp,mv,rm         文件查看類命令有:cat,tac,head,tail,more,less         接下來,逐個介紹:   &…

    Linux干貨 2016-11-04
欧美性久久久久