实例一:手动添加一个应用程序:

创建一个webapp的目录

[root@localhost myweb]# mkdir webapp

[root@localhost webapp]# mkdir logs

[root@localhost myweb]# cd webapp/

 [root@localhost webapp]# mkdir./{classes,lib,META-INF,WEB-INF,Root}

Root目录下创建自定义的index.jsp文件

[root@localhost webapp]# cat Root/index.jsp

<%@ page language="java" %>

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

<html>

       <head>

              <title>jsptest page</title>

       </head>

       <body>  

              <%out.println("hello world"); %>

       </body>

</html>

 

然后配置tomcat的配置文件

[root@localhost conf]# vim server.xml

添加一个Host组件

<Host name="tomcat.lpw.com"appBase="/myweb/webapp/" unpackWARS="TRUE"autoDeploy="no">

                <Contextpath="webapp" docBase="Root" reloadable="true"/>

               <ValveclassName="org.apache.catalina.valves.AccessLogValve"directory="/myweb/logs"

              prefix="myweb_access_log." suffix=".txt"

               pattern="%h %l %u %t&quot;%r&quot; %s %b" />

 

</Host>

并修改默认的engine组件为自定义的Host

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx

 

然后重新启动tomcat

[root@localhost bin]# catalina.sh start

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_02

在浏览其中查看:

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_03

还可以自定义Value组件实现访问控制。如:

<ValveclassName="org.apache.catalina.valves.RemoteAddrValve"  deny="172\.16\.100\.100"/>

 

注意:

appBase:指定tomcat读取程序时的根目录

docBase:指定一个应用程序的根目录,可以指定为Root,直接将程序文件放在此目录下

path :指定访问时的url地址。和docBase是相对了路径,类似于httpd中的Location定义的路径。path给定的路径不能以“/”结尾;

 

实例二:使用nginx做反向代理后端tomcat服务器:

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_04

 

以上面的实例一作为tomcat服务,在另一主机上配置nginx做方向代理。

修改nginx的主配置文件

添加

server {

       listen       80;

              location~* \.(jsp|do)$ {

        proxy_pass  http://tomcat1.com:8080;

       }

}

可以在浏览器中测试:

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_05

 

实例三:以httpd做反向代理实现后端tomcat

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_06

可以使用yum安装httpd,此处使用centos7安装的httpd-2.4

第一步:首先确认httpd是否支持代理模块:   

    proxy_module   //httpd使用此模块实现代理功能的最重要的模块

proxy_http_module //httpd实现基于http协议代理功能的子模块

proxy_balancer_module  //httpd实现负载均衡的模块

proxy_ajp_module  //httpd实现基于ajp协议与后端tomcat链接的模块

以上模块必须启用才可以使用httpd做反向代理或负载均衡与后端tomcat向链接

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_07

注意:另外httpd还可以基于jk模块实现反向代理(使用jk模块实现返向代理时只能基于ajp协议与后端tomcat联系),此模块默认安装的httpd没有安装,需要自行从apache官网下载并编译使用。

 

第二步:修改httpd配置文件:

修改httpd的配置文件,禁用中心主机

#DocumentRoot "/var/www/html"

定义一个虚拟主机

 

[root@lpw3 conf.d]# vim Vhost.conf

<VirtualHost *:80>

       ServerName tomcat1.com

       ProxyVia  On  //是否启用在向客户端响应时的响应报文中添加首部指明是由己代理的。

       ProxyRequests Off //关闭正向代理功能,module_proxy默认情况下既能做正向代理,也能做反向代理,但只能同时使用一种代理方式,Off表示关闭正向代理功能,启用反向代理功能。

       ProxyPreserveHost On //设置是否将客户端请求报文中的Host首部发送给后端服务器。

       <proxy *>

                Require all granted  //设置所有请求都向后代理

       </proxy>

       ProxyPass / http://172.16.249.204:8080/  #设置后端代理服务的地址和端口以及那些资源进行代理。

       ProxyPassReverse / http://172.16.249.204:8080/

       <Location />

                Require all granted

       </Location>

</VirtualHost>

启动httpd服务

[root@lpw3 conf.d]# systemctl start httpd.service

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_08

在浏览器中测试:

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_09

注意:使用httpd做动静分离是很困难的,但是可以使用nginx来实现,一般在生产环境中使用LNAMT:即linuxnginxapachemysqltomcat

 

httpd使用ajp协议向后端tomcat做反向代理:(只需要修改使用的反向代理协议为ajp即可,httpd服务会自动调用module_ajp模块实现反代功能)

<VirtualHost *:80>

       ServerName tomcat1.com

       ProxyVia On

       ProxyRequests Off

       ProxyPreserveHost On

       <proxy *>

                Require all granted

       </proxy>

       ProxyPass / ajp://172.16.249.204:8009/

       ProxyPassReverse / ajp://172.16.249.204:8009/

       <Location />

                Require all granted

       </Location>

</VirtualHost>

nginx或httpd实现反向代理tomcat并实现会话保持(二)_httpd反向带tomcat、nginx_10

注意:对于httpd服务的status页面应该查看代理服务的status页面,只需要再虚拟主机的中添加以下一项,并添加status页面的Location即可实现。

  ProxyPass /staus !


后续实例见博客四:httpd分别基于三种方式实现负载均衡tomcat及nginx实现负载均衡tomcat