前面梦翔儿搞定了:
一个IP对应多个域名的解决办法(WAMP+传统虚拟主机)
一个IP对应多个域名的解决办法(IIS+传统虚拟主机)
当然还有一个方案是用端口映射PortMap软件,这个方案需要出现http://www.ubuntu01.com:8989这样的形式,显然是很不符合大家习惯的。
如果是 一个IP对应多个域名/多个主机,同一80端口,怎么办呢?
模式大概是这样:
访问测试用外网电脑,IP为192.168.2.80,去访问同在外网的81:
www.ubuntu01.com 指向到一个主机192.168.2.81
192.168.2.81 这台电脑上装了两个虚拟主机或VPS
01.ubuntu01.com 指向到主机192.168.2.81的一个虚拟机/vps 其子网IP为192.168.88.135
02.ubuntu01.com 指向到主机192.168.2.81的一个虚拟机/vps 其子网IP为192.168.88.136
解决的思路大概如下:
先按原方法建好域名服务两个域名(www.ubuntu01.com、www.ubuntu01.com)同时解析指向到外网ip 192.168.2.81 上,在如果用路由器,可以用dmz将80口映射到内网的一台安装apache的服务器(ip地址192.168.2.81)上,由这台apache服务器根据域名分别反向代理到其内部的两个虚拟机/vps上。
两台虚拟机/vps的设置没有什么特别的,这里不多说了,主要说说这台反向代理的apache服务器即192.168.2.81的设置
装好wamp或lamp
--------------
因为我是在家里的局域网中测试环境,所以没有设dsn,直接用host,正常应该用域名解析来完成:
192.168.2.80的host
127.0.0.1 localhost
192.168.2.81 www.ubuntu01.com
192.168.2.81 01.ubuntu01.com
192.168.2.81 02.ubuntu01.com
就是说将三个域名都绑在2.81的主机上
-----------
192.168.2.81的host
127.0.0.1 localhost
192.168.2.81 www.ubuntu01.com
192.168.88.135 01.ubuntu01.com
192.168.88.136 02.ubuntu01.com
就是说,把两个子域名,绑定到两个虚拟机/vps上,真实环境也要设host,windows下和linux设置方法差不多
--------------
打开httpd.conf,找到以下几个Module并将其启用(如果没有,可以自行添加)
mod_proxy.so(module_proxy)
mod_proxy_http.so(module_proxy_http)
mod_cache.so(module_cache)
mod_disk_cache.so(module_disk_cache)
就是把对应句前面的#去掉,也可以在wamp的菜单中选中也行
#主机名是唯一的
ServerName 192.168.2.81:80
#虚拟机也是
NameVirtualHost 192.168.2.81
<VirtualHost 192.168.2.81>
ServerAdmin ubuntu01@www.ubuntu01.com
DocumentRoot d:/wamp/www/
ServerName 192.168.2.81
</VirtualHost>
#使用反向代理将192.168.2.81和反向域名http://01.ubuntu01.com 连一起
<VirtualHost 192.168.2.81>
ServerName http://01.ubuntu01.com
ProxyPass / http://01.ubuntu01.com
ProxyPassReverse / http://01.ubuntu01.com
</VirtualHost>
#使用反向代理将192.168.2.81和反向域名http://02.ubuntu01.com 连一起
<VirtualHost 192.168.2.81>
ServerName http://02.ubuntu01.com
ProxyPass / http://02.ubuntu01.com
ProxyPassReverse / http://02.ubuntu01.com
</VirtualHost>
---------
如果虚拟机/vps是IIS,有时出现Proxy Error,加入以下两条解决问题:
SetEnv force-proxy-request-1.0 1
SetEnv proxy-nokeepalive 1
ok,重启apache ,把81主机注销一下最好。
==============
Squid,网上还有方案用这个反向代理,估计原理差不多,就不试了。
真实服务器环境就是把192.168.2.81设成公网IP就行了,两虚拟机用内网IP,其它都一样。。。
梦翔儿忙了半个下午,终于在实验环境中搞定了,很高兴,不是吗?回头到实验室去真实操作一下!