3種方法實現http虛擬主機

http訪問

站點標識: socket

IP相同,但端口不同
IP不同,但端口均爲默認端口
FQDN不同:請求報文中首部 Host: www.magedu.com


有三種實現方案:

基於ip:爲每個虛擬主機準備至少一個ip地址
基於port:爲每個虛擬主機使用至少一個獨立的port
基於FQDN:爲每個虛擬主機使用至少一個FQDN

1基於PORT的多虛擬主機

  • 建立相應目錄及index文件

3種方法實現http虛擬主機

#vim /etc/httpd/conf.d/vhosts.conf 
listen 8001
listen 8002
listen 8003

<virtualhost *:8001>
documentroot /data/site1
<directory /data/site1>
require all granted
</directory>
</virtualhost>

<virtualhost *:8002>
<directory /data/site2>                                                                                               
require all granted
</directory>
documentroot /data/site2
</virtualhost>

<virtualhost *:8003>
<directory /data/site3>                                                                                               
require all granted
</directory>
documentroot /data/site3
</virtualhost>
  • 測試
    root:~ # curl 192.168.64.150:8001
    111
    root:~ # curl 192.168.64.150:8002
    222

    實驗:基於ip的多虛擬主機

  • 添加相應ip
ip a a 192.168.36.7 dev ens33
ip a a 192.168.36.8 dev ens33
ip a a 192.168.36.9 dev ens33
vim /etc/httpd/conf.d/vhosts.conf 
<virtualhost 192.168.36.7:80>
documentroot /data/site1
<directory /data/site1>
require all granted
</directory>
</virtualhost>

<virtualhost 192.168.36.8:80>
<directory /data/site2>
require all granted
</directory>
documentroot /data/site2
</virtualhost>

<virtualhost 192.168.36.9:80>                                                                                         
<directory /data/site3>
require all granted
</directory>
documentroot /data/site3
</virtualhost>
  • 測試
    root:~ # curl 192.168.36.6
    111
    root:~ # curl 192.168.36.7
    222

實驗:基於主機頭的多虛擬主機

vim /etc/httpd/conf.d/vhosts.conf 
<virtualhost *:80>
documentroot /data/site1
servername www.a.com
<directory /data/site1>
require all granted
</directory>
CustomLog "logs/a_access_log" combined
</virtualhost>

<virtualhost *:80>
<directory /data/site2>                                                                                               
require all granted
</directory>
documentroot /data/site2
servername www.b.com
CustomLog "logs/b_access_log" combined
</virtualhost>

<virtualhost *:80>
servername www.c.com
<directory /data/site3>                                                                                               
require all granted
</directory>
documentroot /data/site3
CustomLog "logs/c_access_log" combined
</virtualhost>
  • 在測試機上
在windows編輯  C:\Windows\System32\drivers\etc\hosts #吧只讀去掉
192.168.36.7 www.a.com www.b.com www.c.com

3種方法實現http虛擬主機

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章