假设我们有这样的一个需求:
固定ip为221.184.66.32 多个域名website1.com website2.comwebsite3.com等.多个网站且这些网站是用不同的网站开发技术实现的,有的网站是用asp实现,有的是用jsp,另外一些是php.假如这样的
网站名称网站域名所有技术
website1website1.comasp
website2website2.comphp
website3website3.comjsp
现在可能的需求是所有用户访问这三个网站都直接访问www.website*.com,都用80端口访问此时就需要用另外的什么能够做些端口转发用.因为我们知道,实现在aspphpjsp在最终服务器主机中一个ip是不可能都用80端口跑的只能选择一个用,另外两个要用别的端口.OK了,有了apache,我们就简单了.
环境配置
一 软件下载
需要下载的软件 apache2 php5 tomcat6iis 至于数据库 mysql sqlserver oracle根据需要下载吧
apache_2.2.14-win32-x86-no_ssl.msi
http://labs.xiaonei.com/apache-mirror/httpd/binaries/win32/apache_2.2.14-win32-x86-no_ssl.msi
php-5.2.11-Win32.zip
http://cn2.php.net/get/php-5.2.11-Win32.zip/from/cn.php.net/mirror
apache-tomcat-6.0.20.exe
http://apache.freelamp.com/tomcat/tomcat-6/v6.0.20/bin/apache-tomcat-6.0.20.exe
iis的下载,就不说了
二 安装与配置
apache2tomcat6安装一般只需next下去到over就可以了
iis在添加组件中可以搞定php5直接解压php-5.2.11-Win32.zip就可以了
配置
安装好apache2后,可以打开conf目录下的httpd.cof文件
1>在Listen中增加
Listen 221.184.66.32:80
2>找到<Directory "C:/ProgramFiles/Apache SoftwareFoundation/Apache2.2/cgi-bin">
AllowOverride None
OptionsNone
Orderallow,deny
Allow fromall//将原来的Deny from all 设置成 Allow from all
</Directory>
3>将LoadModule proxy_modulemodules/mod_proxy.so前的#注释去掉,开启
LoadModule proxy_http_modulemodules/mod_proxy_http.so前的注释也去掉
4>将Includeconf/extra/httpd-vhosts.conf前的注释去掉,
5>打开httpd-vhosts.conf文件加上新的虚拟主机如
<VirtualHost 221.184.66.32:80>
DocumentRoot"d:web_aspsite1"
ServerNamewww.website1.com
ErrorLog"logs/dummy-host2.website1.com-error.log"
CustomLog"logs/dummy-host2.website1.com-access.log" common
ProxyPass /http://www.website1.com:8081
ProxyPassReverse / http://www.chen2.com:8081
DirectoryIndex index.asp default.asp index.html
</VirtualHost>
<VirtualHost221.184.66.32:80>
DocumentRoot"d:web_phpsite2"
ServerNamewww.website2.com
ErrorLog"logs/dummy-host2.website2.com-error.log"
CustomLog"logs/dummy-host2.website2.com-access.log" common
DirectoryIndex index.php default.php index.html index.htmindex.shtml
</VirtualHost>
<VirtualHost221.184.66.32:80>
DocumentRoot"d:web_jspsite3"
ServerNamewww.website3.com
ErrorLog"logs/dummy-host2.website3.com-error.log"
CustomLog"logs/dummy-host2.website3.com-access.log" common
ProxyPass /http://www.website3.com:8081
ProxyPassReverse / http://www.chen3.com:8081
DirectoryIndex index.jsp default.jsp index.html
</VirtualHost>
二 解释说明
Listen 221.184.66.32:80 监听此ip的所有80端口的请求
http-80请求发来时,由apache统一管理并分发
LoadModulemod_proxy.so和mod_proxy_http.so使得ProxyPass和ProxyPassReverse指令激活
Include httpd-vhosts.conf可单独配置虚拟主机文件
每一个 VirtualHost都是一个虚拟主机
DocumentRoot 网站根目录 要求php网站必须填写正确
ServerName服务名直接填域名或www.域名
ErrorLog 和 CustomLog就是错误日志和一般性日志
ProxyPass和ProxyPassReverse就是转向代理就是我们说的最重要的地方,如果一个http://www.域名过来的
首先apache发现是80端口,则去找对应的虚拟主机www.域名或域名,此时找到了,如果发现有这两个指令时且路径第一个参数 如/也匹配的则立即重新请求指令的第二个参数如http://www.chen3.com:8081
DirectoryIndex是目录索引,对于php需求配置了