Apache2.4+Tomcat集群_反向代理配置

   Apache2.4+Tomcat集群_反向代理配置


测试环境:Apache反代做为前端反向代理,后端任意,此处我用做windwos,其实linux与windwos配置原理都一样,只是根据公司需求来做。


需求:        要求基于ssl访问,

                  301域名跳转,

                  session sticky方式来接收请求,

                  有故障隔离的作用,以至于在其中一台上线时可以把用户请求转发到另一台。

1.资源下载:

Apache(windows安装包)下载路径 

http://www.apachelounge.com/download/

VC14运行库.下载地址

64位下载

http://download.microsoft.com/download/9/E/1/9E1FA77A-9E95-4F3D-8BE1-4D2D0C947BA2/enu_INREL/vcredistd14x64/vc_redist.x64.exe

32位下载

http://download.microsoft.com/download/9/E/1/9E1FA77A-9E95-4F3D-8BE1-4D2D0C947BA2/enu_INREL/vcredistd14x86/vc_redist.x86.exe

 

 

2.资源上传

上传资源至服务器e:/tmp

 wKiom1X_m9Sifv53AACq0bCShqY544.jpg


 

 

3.依赖工具安装

安装vc_redist工具:

点安装-->

wKioL1X_npTzvIpOAAHiaeRRxzo327.jpg

wKiom1X_nFfwQDuDAAEAl37piRE959.jpg


 

 

4.安装Apache2.4

 

4.1减压到E:/Apache24

wKioL1X_nrDzGlWvAAC0UGKeRIA325.jpg

 

4.2修改配置文件路径conf/httpd.conf

wKiom1X_nIDwXrrkAAD0huBNYSE826.jpg

 

4.3找到默认218行把# ServerName www.example.com:80

换成ServerName www.wyy.com:80

 

4.4测试正常启动

wKioL1X_nsuQSdUPAAA1olfv8dA311.jpg

 

4.5加入系统服务

wKioL1X_nu-S3wHNAABypgpGPp8230.jpg

 

4.6启动程序ApacheMonitor.exe -->start


wKiom1X_nNextp8kAAFnDT26OFM218.jpg

wKioL1X_nxXzjZYfAAEu38fE6oo377.jpg

wKiom1X_nNiydotOAAE61XwXlj0796.jpg

 

4.7查看Apache是否正常访问

wKiom1X_nOvi-q2LAAELgcZOvnA765.jpg

 

5.配置apache反向代理功能

黏贴性session的问题解决

5.1修改配置文件conf/http.conf

取消以下模块的注释 #

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

LoadModulelbmethod_byrequests_modulemodules/mod_lbmethod_byrequests.so

LoadModule slotmem_shm_module modules/mod_slotmem_shm.so

LoadModule socache_shmcb_module modules/mod_socache_shmcb.so

LoadModule headers_module modules/mod_headers.so

LoadModule ssl_module modules/mod_ssl.so

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_http_module modules/mod_proxy_http.so

LoadModule proxy_connect_module modules/mod_proxy_connect.so

5.2再末尾加入以下代码:

# AJP13 Proxy

<IfModule mod_proxy.c>

<IfModule mod_proxy_ajp.c>

Include "conf/extra/httpd-ajp.conf"

</IfModule>

</IfModule>

<Location /balancer-manager> 

    SetHandler balancer-manager 

    Order Deny,Allow 

    Allow from all 

</Location>

5.3在conf/extra下创建httpd-ajp.conf

写入以下代码:

<Proxy *>

Require all granted

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED 

</Proxy>

ProxyPass /test balancer://rqbao_cluster/ stickysession=ROUTEID  

ProxyRequests Off 

<Proxy balancer://rqbao_cluster>

BalancerMember ajp://10.1.1.252:8009 route=tomcat1 ping=3

BalancerMember ajp://10.1.1.253:9009 route=tomcat2 ping=3

</Proxy>

 

6.开启Apache的https功能

6.1打开 httpd.conf 文件开启ssl功能

Include conf/extra/httpd-ssl.conf

6.2打开extra/httpd-ssl.conf文件修改文件内容路径

wKiom1X_nPqDwE0XAAD0huBNYSE319.jpg

 

6.3默认125行改为自己的域名或者ip地址

ServerName www.wyy.com:443

6.4默认144、154、165 

改为:

SSLCertificateFile "e:/Apache24/conf/webCert.cer" 

SSLCertificateKeyFile "e:/Apache24/conf/server.key"

SSLCertificateChainFile "e:/Apache24/conf/ruiqianbao.pem"

6.5把e:/tmp下的webCert.cer、server.key、ruiqianbao.pem这3个文件放到Apache下的conf目录里

测试配置文件

wKiom1X_nZrDVbNRAAA1olfv8dA669.jpg

最后restart Apache 服务

完成!

7.开启Apache的301地址跳转功能

开启LoadModule rewrite_module modules/mod_rewrite.so

根据要跳转的域名加入以下代码:

##############301域名跳转#########

RewriteEngine On

RewriteCond %{http_host} bbs.wyy.com  [NC]

RewriteRule ^(.*)$ https://www.wyy.com [L,R=301]

 

RewriteEngine On

RewriteCond %{http_host} blog.wyy.com  [NC]

RewriteRule ^(.*)$ http://www.wyy.com [L,R=301]

 

RewriteEngine On

RewriteCond %{http_host} www.wyy.com.net  [NC]

RewriteRule ^(.*)$ http://www.wyy.com [L,R=301]

 

8.测试!

7.1在Tomcat根目录创建test.jsp测试文件

加入以下代码:

<%@ page contentType="text/html; charset=GBK" %>

 

<%@ page import="java.util.*" %>

 

<html><head><title>Cluster Test</title></head>

 

<body>

 

<%

 

  //HttpSession session = request.getSession(true);

 

  System.out.println(session.getId());

 

  out.println("<br> SESSION ID:" + session.getId()+"<br>");  

 

  // 如果有新的请求,则添加session属性

 

  String name = request.getParameter("name");

 

  if (name != null && name.length() > 0) {

 

     String value = request.getParameter("value");

 

     session.setAttribute(name, value);

 

  }  

 

out.print("<b>Session List:</b>");  

 

Enumeration<String> names = session.getAttributeNames();

 

while (names.hasMoreElements()) {

 

String sname = names.nextElement(); 

 

String value = session.getAttribute(sname).toString();

 

out.println( sname + " = " + value+"<br>");

 

        System.out.println( sname + " = " + value);

 

   }

 

%>

 

  <form action="testCluster.jsp" method="post">

 

    名称:<input type=text size=20 name="name">

 

     <br>

 

    值:<input type=text size=20 name="value">

 

     <br>

 

    <input type=submit value="提交">

 

   </form>

 

</body>

 

</html>


 wKioL1X_n4GxyDaFAACCdtBmMt4115.jpg


7.2 http://10.1.1.252/balancer-manager监控页面

wKiom1X_nSuBq5E9AANN_0NLfCA482.jpg

 

 


本文出自 “好大的刀” 博客,谢绝转载!

你可能感兴趣的:(apache,session问题,apache反向代理,windows反向代理,apache+tomcat集群)