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

创建一个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"%r" %s %b" />
 
</Host>

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

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_java

 

然后重新启动tomcat

[root@localhost bin]# catalina.sh start

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_java_02

在浏览其中查看:

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 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服务器:

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_反向代理_04

 

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

修改nginx的主配置文件

添加

server {
       listen       80;
              location~* \.(jsp|do)$ {
        proxy_pass  http://tomcat1.com:8080;
       }
}

可以在浏览器中测试:

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_运维_05

 

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

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_后端_06

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

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

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

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

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

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

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

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_java_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

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

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

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

       <proxy *>

设置所有请求都向后代理

       </proxy>

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

       ProxyPa***everse / http://172.16.249.204:8080/

       <Location />

                Require all granted

       </Location>

</VirtualHost>

启动httpd服务

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

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_tomcat_08

在浏览器中测试:

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_运维_09

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

 

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/
       ProxyPa***everse / ajp://172.16.249.204:8009/
       <Location />
                Require all granted
       </Location>
</VirtualHost>

haproxy做反向代理nginx怎么记录客户端原始IP地址请求 nginx反向代理会话保持_运维_10

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

  ProxyPass /staus !


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





转载于:https://blog.51cto.com/qikexing/1709441