Apache中mod_proxy模块的使用问题及解决方案
作者:Z.Virgil
NC中间件
应用场景:配置了apache的情况,包括uap集群,配置https等场景下均适用;如果是单机(NC单结点情况不存在问题,则不用配置这项; was环境也不用配置此项。)
解决方案:按如下两个步骤进行配置
步骤一:将服务器信息-集群配置中配置的AJP协议删除
步骤二:修改配置文件
编辑${HTTPD_HOME}/conf/httpd.conf文件,开启以下模块, Apache启动时自动加载:
1、开启模块
修改${HTTPD_HOME}/conf/httpd.conf,增加以下模块(取消注释,如有其他依赖, 则相应取消注释)
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule manager_module modules/mod_manager.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
2、编辑${HTTPD_HOME}/conf/httpd.conf
在文件结尾处添加负载均衡的Server信息和会话session保持配置,以下是一个配置示例:
<VirtualHost *> ServerName orcl.example.com ErrorLog logs/orcl.example.com-error_log CustomLog logs/orcl.example.com-access_log common ProxyRequests Off ProxyPreserveHost On Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; secure" env=BALANCER_ROUTE_CHANGED ProxyPass / balancer://httpproxy/ stickysession=routeId <Proxy balancer://httpproxy/> BalancerMember http://IP1:port1 route=ncMem01 BalancerMember http://IP2:port2 route=ncMem02 </Proxy> </VirtualHost>
以上配置参数说明
1、ProxyPass :将远程服务器映射到本地服务器的URL空间
2、balancer:// :代理的指令类型
3、sticky-session粘连,就是说用户一旦访问了某个 Balancer Member,就给他个 cookie,让他在后面的请求都访问那个 Balancer Member 。ProxyPass 那行 最后的 stickysession=routeId,表示从 cookie 中读取 routeId,并自动分配到相应的服务上去。如果后端服务器使用不同的cookie名称或者URL编码的ID(像servlet容器),使用|来分开他们。第一个部分针对cookie,第二个针对路径。如:ProxyPass / balancer:// httpproxy、stickysession=JSESSIONID|jsessionid
4、ProxyRequests : 在使用ProxyPass指令的时候,ProxyRequests指令通常都应该是关闭 的。
5、BalancerMember : 均衡成员
6、route : 工作单元的路由,用于负载均衡器中。该路由是附加给会话ID的一个值。
到此这篇关于Apache中mod_proxy模块的使用的文章就介绍到这了,更多相关Apache mod_proxy模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!