Apache 配置虛擬主機之2--基於 IP

  • 基於 name-based
  • 基於 IP
  • 基於 port
  • 結合

 

二、基於IP

配置hosts,httpd.conf,eno

1、假設服務器已有IP爲192.168.136.140,使用ifconfig在同一個網絡接口eno16777736(或者eth0)綁定另外2個IP,或者同 nmtui 配置。可以進行ping探測。

[root@docker1 ~]# ifconfig eno16777736:192.168.136.143
[root@docker1 ~]# ifconfig eno16777736:192.168.136.144
2、修改/etc/hosts文件,添加一一對應的域名
# IP-Based
192.168.136.143    www3.example.com
1921.68.136.144    www4.example.com

3、建立虛擬主機存放網頁的根目錄

# /var/www 目錄結構
[root@docker1 www]# tree
.
├── cgi-bin
├── html
├── logs
│   ├── www1
│   │   ├── access_log
│   │   └── error_log
│   ├── www2
│   │   ├── access_log
│   │   └── error_log
│   ├── www3
│   │   ├── access_log
│   │   └── error_log
│   └── www4
│   ├── access_log
│   └── error_log
└── vhosts
    ├── www1
    │   └── index.html
    ├── www2
    │   └── index.html
    ├── www3
    │   └── index.html
    └── www4
        └── index.html

index.html內容分別如下

[root@docker1 www3]# cat index.html ../www4/index.html 
Holle world!
Welcom to www3.example.com site with IP-Based.
Holle world!
Welcom to www4.example.com site with IP-Based.

4、在httpd.conf中將附加配置文件httpd-vhosts.conf包含進來,接着修改httpd-vhosts.conf配置

# IP-Based
<VirtualHost 192.168.136.143:80>
    ServerAdmin [email protected]
    ServerName www3.example.com
    DocumentRoot "/var/www/vhosts/www3"
    ErrorLog "/var/www/logs/www1/error_log"
    CustomLog "/var/www/logs/www1/access_log" combined
</VirtualHost>

<VirtualHost 192.168.136.144:80>
    ServerAdmin [email protected]
    ServerName www4.example.com
    DocumentRoot "/var/www/vhosts/www4"
    ErrorLog "/var/www/logs/www4/error_log"
    CustomLog "/var/www/logs/www4/access_log" combined
</VirtualHost>

5、配置語法檢查 httpd -S,可看到Name-Based和IP-Based共存。

[root@docker1 www]# httpd -S
VirtualHost configuration:
192.168.136.143:80     www3.example.com (/etc/httpd/conf/httpd.conf:98)
192.168.136.144:80     www4.example.com (/etc/httpd/conf/httpd.conf:106)
*:80                   is a NameVirtualHost
         default server www1.example.com (/etc/httpd/conf/httpd.conf:82)
         port 80 namevhost www1.example.com (/etc/httpd/conf/httpd.conf:82)
                 alias example1.com
         port 80 namevhost www2.example.com (/etc/httpd/conf/httpd.conf:89)
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "/etc/httpd/logs/error_log"
Mutex authn-socache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default 
Mutex mpm-accept: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex proxy: using_defaults
PidFile: "/run/httpd/httpd.pid"
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
User: name="apache" id=48
Group: name="apache" id=48

6、重啓服務 systemctl restart httpd.service,然後訪問4個站點。

[root@docker1 www]# curl www1.example.com  www2.example.com www3.example.com www4.example.com
Holle world!
welcome to www1.example.com site with Name-Based.
Holle world!
welcome to www2.example.com site with Name-Based.
Holle world!
Welcom to www3.example.com site with IP-Based.
Holle world!
Welcom to www4.example.com site with IP-Based.
# 通過IP或者域名訪問3,4
[root@docker1 www]# curl www3.example.com  192.168.136.143:80  www4.example.com 192.168.136.144:80
Holle world!
Welcom to www3.example.com site with IP-Based.
Holle world!
Welcom to www3.example.com site with IP-Based.
Holle world!
Welcom to www4.example.com site with IP-Based.

Holle world!
Welcom to www4.example.com site with IP-Based.

至此已完成了IP-Based的配置。

附:http://httpd.apache.org/docs/2.4/vhosts/ip-based.html

image

 

 

問題:用戶如何配置和管理。

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