实验-------虚拟主机
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了实验-------虚拟主机相关的知识,希望对你有一定的参考价值。
虚拟主机
有三种实现方案:
基于ip:为每个虚拟主机准备至少一个ip地址
基于port:为每个虚拟主机使用至少一个独立的port
基于FQDN:为每个虚拟主机使用至少一个FQDN
注意:一般虚拟机不要与main主机混用;因此,要使用虚拟主机,一般先禁用main主机
禁用方法:注释中心主机的DocumentRoot指令即可
说明:当有虚拟主机的时候,默认站点是虚拟主机的第一个站点
基于FQDN的方式是根据http报文首部来确定客户端访问的是哪个站点
虚拟主机的配置方法:
<VirtualHost IP:PORT>
ServerName FQDN 当基于RQSN的时候这一项才起作用
DocumentRoot “/path"
</VirtualHost>
建议:上述配置存放在独立的配置文件中
其它可用指令:
ServerAlias:虚拟主机的别名;可多次使用
ErrorLog: 错误日志
CustomLog:访问日志
<Directory “/path">
</Directory>
如下实验每次修改完httpd配置文件之后都需要service httpd reload重新加载文件
一、基于IP的虚拟主机示例
前提是准备多个ip,并且每个ip对应一个站点,方便测试
ip addr add 192.168.119.10/24 dev eth0
ip addr add 192.168.119.20/24 dev eth0
ip addr add 192.168.119.30/24 dev eth0
mkdir /app/site1 /app/site2 /app/site3
echo /app/site1/index.html > /app/site1/index.html
echo /app/site2/index.html > /app/site2/index.html
echo /app/site3/index.html > /app/site3/index.html
vim /etc/httpd/conf.d/test.conf
<VirtualHost 192.168.119.10:80>
DocumentRoot "/app/site1"
</VirtualHost>
<VirtualHost 192.168.119.20:80>
DocumentRoot "/app/site2"
</VirtualHost>
<VirtualHost 192.168.119.30:80>
DocumentRoot "/app/site3"
</VirtualHost>
测试: curl http://192.168.119.10
curl http://192.168.119.20
curl http://192.168.119.30
但是使用ip访问不现实,所以在客户端模拟出dns,然后使用域名来访问
vim /etc/hosts 添加三行
192.168.119.10 www.a.com
192.168.119.20 www.b.com
测试:
curl http://www.a.com
curl http://www.b.com
二、基于端口的虚拟主机(可和基于IP的虚拟主机混和使用)
vim /etc/httpd/conf.d/test.conf
listen 8001
listen 8002
listen 8003
<VirtualHost *:8001>
DocumentRoot "/app/site1"
</VirtualHost>
<VirtualHost *:8002>
DocumentRoot "/app/site2"
</VirtualHost>
<VirtualHost *:8003>
DocumentRoot "/app/site3"
</VirtualHost>
测试:
curl http://192.168.119.129:8001
curl http://192.168.119.129:8002
curl http://192.168.119.129:8003
同样可以模拟dns使用域名访问而不需要输入ip
vim /etc/hosts
192.168.119.129 www.a.com www.b.com www.c.com
测试:
curl http://www.a.com:8001
curl http://www.b.com:8002
curl http://www.c.com:8003
三、基于FQDN的虚拟主机:
准备条件:在客户端模拟三个站点的解析
vim /etc/hosts
192.168.119.129 www.a.com www.b.com www.c.com
服务器端配置:
vim /etc/httpd/conf.d/test.conf
NameVirtualHost *:80 httpd2.4不需要此指令
<VirtualHost *:80>
ServerName www.a.com
DocumentRoot "/app/site1"
errorlog logs/a.com.errlog 错误日志
customlog logs/a.com.accesslog combined 访问日志
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.net
DocumentRoot "/app/site2"
errorlog logs/b.com.errlog 错误日志
customlog logs/b.com.accesslog combined 访问日志
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.org
DocumentRoot "/app/site3"
errorlog logs/c.com.errlog 错误日志
customlog logs/c.com.accesslog combined 访问日志
</VirtualHost>
测试:
curl http://www.a.com
curl http://www.b.com
curl http://www.c.com
curl http://192.168.119.129/
默认站点是第一个站点
以上是关于实验-------虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章