apache反向代理和负载均衡

本篇核心内容: (1) :  Apache + PHP 的配置      (2): Apache 作为IIS的代理   (3):  Apache负载均衡
当前的服务器环境 : WINDOWS 2003 , IIS6.0 , ASP , .NET , PHP5 , MYSQL5 ,服务器为单IP 。
服务器上已经运行了,一些网站(ASP ,.NET,php的站点)。

今天安装一个叫“炫彩电子商务平台”的PHP源码网站的时候, 提示:"请在Apache服务器下安装。IIS等其它WEB服务器软件暂不受本系统支持。”

对于这样的程序,真是无语 ,都什么时代了,还搞不兼容的蠢事。 有关这个源码程序,可以去他的官方http://www.ueidc.com/install了解详情。

为了保证原来IIS上的ASP ,.NET的站的正常使用, IIS是不能丢下的。 现在又需要APACHE , 于是我们就面临了IIS和APACHE共用80端口情况。

下面介绍下常用的解决方案:

( 1): Apache + PHP 的配置

1: 在WINDOWS上安装好APACHE ,我这里使用的是安装版本的APAHCE ,可以百度搜索关键词“Apache HTTP Server” 即可获取 。 APACHE 安装后默认端口

是80端口的, 这时候由于之前我安装过IIS,所以此时APACHE启动不了。 我们把IIS的80端口全部换成81端口,让APACHE为80端口, 启动APACHE 。

2 : APACHE 加载PHP
打开APACHE的主配置文件,在适当的地方添加如下信息:
LoadModule php5_module "C:/PHP/php5apache2_2.dll"
PHPIniDir "C:/PHP"
AddType application/x-httpd-php .php
DirectoryIndex index.html index.php
修改完httpd.conf配置文件后,保存下,然后重启下APACHE服务,看是否能启动的起来,若启动不了话,说明修改错了,需要仔细检查下。 若APACHE能启动的

话,然后写一个PHP探针测试下PHP解析是否加载成功。

3: 创建APACHE虚拟站点
首先打开APACHE的主配置文件httpd.conf 找到 #Include conf/extra/httpd-vhosts.conf 把前面的#去掉 ,开启APACHE的虚拟主机功能。
然后打开D:\Apache2.2\conf\extra\httpd-vhosts.conf 文件,在文件的末尾仿写一个虚拟主机站点:

<VirtualHost *:80>
ServerName www.heywine.net
ServerAlias heywine.net
DocumentRoot "D:\loywine"
<Directory "D:\loywine">
Options Indexes FollowSymLinks
AllowOverride all
Order Allow,Deny
Allow from all
</VirtualHost>

保存以上修改, 然后重启下APACHE 。

4 : 安装炫彩电子商务平台
在浏览器地址栏输入http://www.heywine.net/install/ 进行安装 ,在安装的时候,提示“ Forbidden You don't have permission to access /install/ on this server. ”错误,原因是APACHE主配置文件对网站的访问权限做了禁止。

打开httpd.conf 我们会发现此WINDOWS版本的APACHE软件安装后默认情况下:

Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all

是拒绝了所有 , 现在我修改成
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all

这样就可以了 。

我们在安装炫彩电子商务源码的时候,又提示:"Apache没有加载mod_rewrite模块,不可使用本系统,请先开启mod_rewrite" 。 解决办法:编辑D:\Apache2.2\conf\httpd.conf 这个文件,把“# LoadModule rewrite_module modules/mod_rewrite.so”中的#号去掉,保存配置文件,后重启下APACHE服务。 这样就不在提示这个错误了。

解决了以上两个问题之后, 就可以顺利安装成功。

 

(2) : Apache 作为IIS的代理 (Apache反向代理设置)

完成了上面的几步操作,解决的是APACHE环境下站点的运行, 此解决了 “炫彩电子商务平台”问题。
IIS上其他站点,比如ASP站点访问, 我们可以通过APACHE代理功能实现跳转到IIS的访问。
实现过程是: APACHE 使用80端口, IIS使用其他端口如81端口 , 设置APACHE作为IIS的代理 。分为两步:

a : 在httpd.conf里面,取消下面四行的注释:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so

b : 然后建立一个虚拟主机,将该域名的所有访问转向81端口
<VirtualHost *:80>
ServerName www.loywine.com
ServerAlias heywine.net
ProxyPass / http://www.loywine.com:81/
ProxyPassReverse / http://www.loywine.com:81/
ErrorLog "logs/dummy-host2.cloud-281ad03a0.novalocal-error.log"
CustomLog "logs/dummy-host2.cloud-281ad03a0.novalocal-access.log" common
</VirtualHost>

设置后,重启下APACHE服务,使得配置生效, 然后我们测试下。
APACHE http://www.loywine.com/ 访问的页面跟 IIS http://www.loywine.com:81 访问的页面相同时,说明整合成功 。

c : 测试
1: 我在IIS站点对应的程序目录放一个阿江探针 ,经过测试 APACHE http://www.loywine.com/ 访问的跟 IIS http://www.loywine.com:81 访问的页面相同 。以下为测试截图:

apache1

IIS1

2:  为了深入测试,我在IIS站点家目录下面新建立一个目录a , 页面内容为:"iis站点下的a目录页面展示页面" 的 asp页面, 经过测试 APACHE http://www.loywine.com/ 访问的跟 IIS http://www.loywine.com:81 访问的页面相同 。以下为测试截图:

apache2

iis2

参考:Apache反向代理设置 

(3) :  Apache负载均衡配置样例

想要达到负载均衡的目的,首先,在Apache安装目录下找到conf/httpd.conf文件,去掉以下文本前的注释符(#)以便让Apache在启动时自动加载代理(proxy)模块。

LoadModule proxy_module modules/mod_proxy.so    #提供代理服务器功能
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so   #提供负载均衡功能
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
LoadModule proxy_http_module modules/mod_proxy_http.so   #让代理服务器能支持HTTP协议

向下拉动文档找到<IfModule dir_module>节点,在DirectoryIndex index.html后加上index.jsp,这一步只是为了待会配置完tomcat后能看到小猫首页,可以不做。继续下拉文档找到Include conf/extra/httpd-vhosts.conf,去掉前面的注释符。

然后打开conf/extra/httpd-vhosts.conf,配置虚拟站点,在最下面加上:

<VirtualHost *:80>
ServerAdmin 管理员邮箱
ServerName localhost
ServerAlias localhost
ProxyPass / balancer://sy/ stickysession=jsessionid nofailover=On
ProxyPassReverse / balancer://sy/
ErrorLog "logs/sy-error.log"
CustomLog "logs/sy-access.log" common
</VirtualHost>

然后回到httpd.conf,在文档最下面加上:

ProxyRequests Off
<proxy balancer://sy>
BalancerMember ajp://127.0.0.1:8009 loadfactor=1 route=jvm1
BalancerMember ajp://127.0.0.1:9009 loadfactor=1 route=jvm2
</proxy>

ProxyRequests Off 是告诉Apache需要使用反向代理,ip地址和端口唯一确定了tomcat节点和配置的ajp接受端口。loadfactor是负载因子,Apache会按负载因子的比例向后端tomcat节点转发请求,负载因子越大,对应的tomcat服务器就会处理越多的请求,如两个tomcat都是1,Apache就按1:1的比例转发,如果是2和1就按2:1的比例转发。这样就可以使配置更灵活,例如可以给性能好的服务器增加处理工作的比例,如果采取多台服务器,只需要修改ip地址和端口就可以了。route参数对应后续tomcat负载均衡配置中的引擎路径(jvmRoute)。

 

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部