CentOS 6.x用普通用戶無法使用1024的端口,當(dāng)使用80端口時旺隙,可以使用iptables做轉(zhuǎn)發(fā)。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
apache的反向代理的Tomcat
<VirtualHost *:80>
ServerName www.example.com
ProxyVia on
ProxyRequests off
ProxyPreserveHost on
<proxy balancer://test>
BalancerMember http://172.16.0.76:8080 loadfactor=1 route=TomcatA
BalancerMember http://172.16.0.77:8080 loadfactor=1 route=TomcatB
</proxy>
ProxyPass / balancer://test/
ProxyPassReverse / balancer://test/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
Order deny,allow
Allow from all
</Location>
</VirtualHost>
關(guān)于如上apache指令的說明:
ProxyPreserveHost {On|Off}
:如果啟用此功能骏令,代理會將用戶請求報文中的Host:行發(fā)送給后端的服務(wù)器,而不再使用ProxyPass指定的服務(wù)器地址垄提。如果想在反向代理中支持虛擬主機榔袋,則需要開啟此項,否則就無需打開此功能铡俐。
ProxyVia {On|Off|Full|Block}
:用于控制在http首部是否使用Via:凰兑,主要用于在多級代理中控制代理請求的流向。默認為Off审丘,即不啟用此功能吏够;On表示每個請求和響應(yīng)報文均添加Via:;Full表示每個Via:行都會添加當(dāng)前apache服務(wù)器的版本號信息;Block表示每個代理請求報文中的Via:都會被移除锅知。
ProxyRequests {On|Off}
:是否開啟apache正向代理的功能播急;啟用此項時為了代理http協(xié)議必須啟用mod_proxy_http模塊。同時售睹,如果為apache設(shè)置了ProxyPass桩警,則必須將ProxyRequests設(shè)置為Off。
ProxyPass [path] !|url [key=value key=value ...]]
:將后端服務(wù)器某URL與當(dāng)前服務(wù)器的某虛擬路徑關(guān)聯(lián)起來作為提供服務(wù)的路徑昌妹,path為當(dāng)前服務(wù)器上的某虛擬路徑捶枢,url為后端服務(wù)器上某URL路徑。使用此指令時必須將ProxyRequests的值設(shè)置為Off飞崖。需要注意的是烂叔,如果path以“/”結(jié)尾,則對應(yīng)的url也必須以“/”結(jié)尾固歪,反之亦然蒜鸡。
另外,mod_proxy模塊在httpd 2.1的版本之后支持與后端服務(wù)器的連接池功能昼牛,連接在按需創(chuàng)建在可以保存至連接池中以備進一步使用术瓮。連接池大小或其它設(shè)定可以通過在ProxyPass中使用key=value的方式定義。常用的key如下所示:
◇ min
:連接池的最小容量贰健,此值與實際連接個數(shù)無關(guān)胞四,僅表示連接池最小要初始化的空間大小。
◇ max
:連接池的最大容量伶椿,每個MPM都有自己獨立的容量辜伟;都值與MPM本身有關(guān),如Prefork的總是為1脊另,而其它的則取決于ThreadsPerChild指令的值导狡。
◇ loadfactor
:用于負載均衡集群配置中,定義對應(yīng)后端服務(wù)器的權(quán)重偎痛,取值范圍為1-100旱捧。
◇retry
:當(dāng)apache將請求發(fā)送至后端服務(wù)器得到錯誤響應(yīng)時等待多長時間以后再重試。單位是秒鐘踩麦。
如果Proxy指定是以balancer://開頭枚赡,即用于負載均衡集群時,其還可以接受一些特殊的參數(shù)谓谦,如下所示:
◇lbmethod
:apache實現(xiàn)負載均衡的調(diào)度方法贫橙,默認是byrequests,即基于權(quán)重將統(tǒng)計請求個數(shù)進行調(diào)度反粥,bytraffic則執(zhí)行基于權(quán)重的流量計數(shù)調(diào)度卢肃,bybusyness通過考量每個后端服務(wù)器的當(dāng)前負載進行調(diào)度疲迂。
◇maxattempts
:放棄請求之前實現(xiàn)故障轉(zhuǎn)移的次數(shù),默認為1莫湘,其最大值不應(yīng)該大于總的節(jié)點數(shù)尤蒿。
◇ nofailover
:取值為On或Off,設(shè)置為On時表示后端服務(wù)器故障時逊脯,用戶的session將損壞优质;因此,在后端服務(wù)器不支持session復(fù)制時可將其設(shè)置為On军洼。
◇ stickysession
:調(diào)度器的sticky session的名字巩螃,根據(jù)web程序語言的不同,其值為JSESSIONID或PHPSESSIONID匕争。
上述指令除了能在banlancer://或ProxyPass中設(shè)定之外避乏,也可使用ProxySet指令直接進行設(shè)置,如:
<Proxy balancer://test>
BalancerMember http://172.16.0.76:8080 loadfactor=1
BalancerMember http://172.16.0.77:8080 loadfactor=2
ProxySet lbmethod=byrequests
</Proxy>
ProxyPassReverse:用于讓apache調(diào)整HTTP重定向響應(yīng)報文中的Location甘桑、Content-Location及URI標(biāo)簽所對應(yīng)的URL拍皮,在反向代理環(huán)境中必須使用此指令避免重定向報文繞過proxy服務(wù)器。
ajp的代理模式
使用ajp協(xié)議進行代理
配置ajp的配置文件跑杭,將協(xié)議由http更改為ajp協(xié)議即可:
[root@proxy conf.d]# vim mod_proxy_ajp.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.example.com
ProxyVia on
ProxyRequests off
ProxyPreserveHost on
<proxy balancer://test>
BalancerMember ajp://172.16.0.76:8009 loadfactor=1 route=TomcatA
BalancerMember ajp://172.16.0.77:8009 loadfactor=1 route=TomcatB
</proxy>
<Location /lbmanager>
SetHandler balancer-manager
</Location>
ProxyPass /lbmanager !
ProxyPass / balancer://test/
ProxyPassReverse / balancer://test/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
Order deny,allow
Allow from all
</Location>
</VirtualHost>
通過mod_jk模塊進行代理
To be continue 铆帽。。德谅。爹橱。