1、httpd.conf文件的修改
我们首先打开appserv的安装目录,找到httpd.conf文件,把下面代码前面的#号去掉,去掉#意思是启用apache的虚拟主机功能。
[plain] view plaincopy
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
[plain] view plaincopy
#Include conf/extra/httpd-vhosts.conf
而去掉这一行#意思是从conf/extra/httpd-vhosts.conf这个文件导入虚拟主机配置
2、httpd-vhosts.conf修改方法
[plain] view plaincopy
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@dummy-host.www.phpStudy.net
DocumentRoot "C:/Program Files/Apache2/docs/dummy-host.www.phpStudy.net"
ServerName dummy-host.www.phpStudy.net
ServerAlias www.dummy-host.www.phpStudy.net
ErrorLog "logs/dummy-host.www.phpStudy.net-error.log"
CustomLog "logs/dummy-host.www.phpStudy.net-access.log" common
</VirtualHost>
NameVirtualHost *:80
注意事项
1:NameVirtualHost 是指定虚拟主机所使用的IP地址或域名,可以定义多个。但是是IP地址。
2:每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。
3:如果有来自80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。因此,要为主服务器配置一个虚拟主机。
ServerAdmin 管理员邮箱
DocumentRoot 网站目录 (注意:如果网站目录中的路径有空格,请在路径两端加上双引号)
ServerName 要绑定的域名(必填)
ServerAlias 要绑定的虚拟主机的别名。(可选,如果多个域名,中间以空格分隔,如果没有,则去掉该行)
CustomLog 用户日志文件(可选,如果不需要,则去掉该行)
ErrorLog 错误日志(可选,如果不需要,则去掉该行)
3、"_default_"虚拟主机使用教程
[plain] view plaincopy
<VirtualHost _default_:*>
DocumentRoot /www/default
</VirtualHost>
该虚拟主机将接管与其它虚拟主机IP和端口不匹配的请求。如此一来,主服务器将不会处理任何请求。所以要把主服务器配置成一个虚拟主机。
[plain] view plaincopy
<VirtualHost 158.29.33.248>
ProxyPreserveHost On
ProxyPass /foo/no !
ProxyPass /foo http://192.168.111.2
ProxyPassReverse /foo http://192.168.111.2
ServerName hostname.example.com
</VirtualHost>
注意事项
1、首先这是一个基于IP的虚拟主机,它接收并处理对IP地址158.29.33.248的请求。
2、ProxyPass /foo http://192.168.111.2 将把对http://158.29.33.248/foo的请求转换为一个代理请求,该请求指向http://192.168.111.2。
3、ProxyPass /foo/no ! 不代理针对/foo/no的请求。这个必须放在正常代理指令之前。
4、ProxyPreserveHost On 意思是传送原始请求的Host信息给被代理的机器。
4、配置实例教程
一个项目数据应用,为了防止由于域名解析问题导致不能正常访问,因此采用IP的方式访问接口。apache虚拟主机的配置如下:
1、在httpd.conf中Listen 80下面增加一行,内容为:Listen 8080,即监听8080端口
2、配置虚拟主机配置
[plain] view plaincopy
#NameVirtualHost 61.122.3.6:8080 这一行可以不需要。经测试,基于IP地址的虚拟主机可不用设置NameVirtualHost项。
<VirtualHost 61.122.3.6:8080>
ServerAdmin webmaster@dummy-host.www.phpStudy.net
DocumentRoot "d:/web/openj"
</VirtualHost>