HTTPD 虚拟主机及完成配置示例
虚拟主机
站点标识: socket
IP相同,但端口不同
IP不同,但端口均为默认端口
FQDN不同: 请求报文中首部 Host: www.magedu.com
虚拟主机有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
**注意(专用于httpd-2.2):**一般虚拟机不要与中心主机混用;因此,要使用虚拟主机,得先禁用’main’主机;禁用方法:注释中心主机的DocumentRoot指令即可。
虚拟主机的配置方法
<VirtualHost IP:PORT>
ServerName FQDN
DocumentRoot ""
</VirtualHost>
其它可用指令:
ServerAlias # 虚拟主机的别名;可多次使用
ErrorLog # 单独指定错误日志的存放位置
CustomLog # 单独指定访问日志的存放位置
<Directory "">
..
</Directory>
Alias
...
基于IP的虚拟主机示例
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.7:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.8:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
基于端口的虚拟主机
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:808>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:8080>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
基于FQDN的虚拟主机
<VirtualHost 172.16.100.6:80>
ServerName www.a.com
DocumentRoot "/www/a.com/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.b.net
DocumentRoot "/www/b.net/htdocs"
</VirtualHost>
<VirtualHost 172.16.100.6:80>
ServerName www.c.org
DocumentRoot "/www/c.org/htdocs"
</VirtualHost>
基于IP的虚拟主机的完整示例
IP地址 | 域名 | 文档根 |
---|---|---|
192.168.1.10 | www.neo.com | /data/web/neo/ |
192.168.1.100 | www.tang.com | /data/web/tang/ |
1、创建文档根和主页
[root@neo ~]# cat /data/web/neo/index.html
<h1>This is neo's website!</h1>
[root@neo ~]# cat /data/web/tang/index.html
<h1>This is tang's website!</h1>
2、修改本机的 hosts 文件,并配置本机的 IP 地址
[root@neo ~]# ip addr list | grep "inet\>" | grep -v 127.0.0.1 | grep -v 192.168.10.5
inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
inet 192.168.1.100/32 scope global ens33
[root@neo ~]# cat /etc/hosts
192.168.1.10 www.neo.com
192.168.1.100 www.tang.com
3、配置 HTTPD 主配置文件,进行语法检查,并重启服务
[root@Neo ~]# vim /etc/httpd/conf/httpd.conf
<VirtualHost 192.168.1.10:80>
ServerName www.neo.com
DocumentRoot "/data/web/neo"
<Directory "/data/web/neo">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
<VirtualHost 192.168.1.100:80>
ServerName www.tang.com
DocumentRoot "/data/web/tang"
<Directory "/data/web/tang">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
[root@Neo ~]# httpd -t
Syntax OK
[root@Neo ~]# systemctl restart httpd.service
4、通过浏览器访问,进行验证
基于端口的虚拟主机的完整示例
IP地址 | 域名 | 文档根 |
---|---|---|
192.168.1.10:80 | www.neo.com | /data/web/neo/ |
192.168.1.10:8080 | www.tang.com | /data/web/tang/ |
1、创建文档根和主页
[root@neo ~]# cat /data/web/neo/index.html
<h1>This is neo's website!</h1>
[root@neo ~]# cat /data/web/tang/index.html
<h1>This is tang's website!</h1>
2、修改本机的 hosts 文件,并配置本机的 IP 地址和 iptables
[root@neo ~]# ip addr list | grep "inet\>" | grep -v 127.0.0.1 | grep -v 192.168.10.5
inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute dynamic ens33
[root@neo ~]# cat /etc/hosts
192.168.1.10:80 www.neo.com
192.168.1.10:8080 www.tang.com
[root@Neo ~]# iptables -I INPUT -p TCP --dport 80 -j ACCEPT
[root@Neo ~]# iptables -I INPUT -p TCP --dport 8080 -j ACCEPT
3、配置 HTTPD 主配置文件,进行语法检查,并重启服务
[root@Neo ~]# vim /etc/httpd/conf/httpd.conf # 进行虚拟主机配置,并且配置监听接口
VirtualHost 192.168.1.10:80>
ServerName www.neo.com
DocumentRoot "/data/web/neo"
<Directory "/data/web/neo">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
Listen 80
<VirtualHost 192.168.1.10:8080>
ServerName www.tang.com
DocumentRoot "/data/web/tang"
<Directory "/data/web/tang">
AllowOverride None
Options None
Require all granted
</Directory>
</VirtualHost>
Listen 8080
[root@Neo ~]# httpd -t
Syntax OK
[root@Neo ~]# systemctl restart httpd.service
[root@Neo ~]# ss -tnl # 两个监听端口
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::8080 :::*
LISTEN 0 128 :::80 :::*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
4、通过浏览器访问,进行验证