关于Tomcat反向代理功能:

关于Tomcat反向代理功能:

将客户端的静态请求由{Nginx,Apache}处理,而动态请求则转发至后端Tomcat服务器

Nginx实现方式:

准备工作
    Tomcat
    Nginx

请求过程:
    client --> http --> nginx --> reverse_proxy --> http --> tomcat (http connector)

一 安装Nginx并且修改配置文件

# yum -y install nginx     #此处为了节省时间就使用了yum方式安装
# cp /etc/nginx/nginx.conf{,.bak}  #修改配置文件之前需做备份
# vim /etc/nginx/nginx.conf
    location ~* \.(jsp|do)$ {                  #当发送来静态请求时,nginx做处理,而当jsp或do结尾的文件时则转发给web1.kaikai.com处理
        proxy_pass http://web1.kaikai.com           
    }
# nginx -t 
# systemctl start nginx

二 后端安装Tomcat(web1.kaikai.com操作)

# tar zxvf apache-tomcat-8.5.32.tar.gz        #解压指定文件
# ln -sv apache-tomcat-8.5.32/ tomcat         #创建软链接方便识别
# mkdir -pv /data/webapps/{myapp,logs}/{classes,lib,WEB-INF,META-INF}  #创建tomcat项目必须要有的目录结构
# vim /data/webapps/myapp/index.jsp           #创建主页测试文件
    <%@ page language="java" %>
    <%@ page import="java.util.*" %>
    <html>
            <head>
                    <title>JSP Test Page on web1</title>
            </head>
            <body>
                    <% out.println("Hello web1.kaikai.com"); %>
            </body>
    </html>
# vim /app/tomcat/conf/server.xml             #修改tomcat配置文件
    <Host name="web1.kaikai.com" appBase="/data/webapps" 
     autoDeploy="true" unpackWARs="true">
     <Context path="" docBase="myapp" redeploy="true"/>
      <Valve classname="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
        prefix="web1_access_log" suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
    </Host>
# catalina.sh configtest            #检查配置文件是否有问题
# catalina.sh start                 #没有问题的话直接启动即可

Apache实现方式:

请求过程:
    client --> http --> httpd --> reverse_proxy --> {http|ajp} --> tomcat {http connector|ajp connector}

反代模块:
    主: proxy_module
    子: proxy_module_http
        proxy_module_ajp

准备工作:
    Apache
    Tomcat

    使用mod_proxy做负载均衡的一系列参数描述:
    ProxyPreserveHost{On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址,如果想在反向代理中支持虚拟
                              主机,则需要开启此选项,否则无须打开此功能
    ProxyVia {On|Off|Full|Block}:用于控制在http首部是否使用Via,主要用于在多级代理中控制代理请求的流向,默认为Off;On表示每个请求和响应报文均添加Via;Full表示每
                                 个Via行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via都会被移除
    ProxyRequests {On|Off}: 是否开启apache正向代理的功能,启用此选项为了代理http协议必须启用mod_proxy_http模块,同时,如果为apache设置了ProxyPass,则必须将
                            ProxyRequests设置为Off
    ProxyPass [path] !|url [key=value key=value key=value...]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟
                                    路径,url为后端服务器上的某URL路径,使用此指令时必须将ProxyRequests的值设为Off,需要注意的是,如果path以"/"结尾,则对应的url也必须以
                                    "/"结尾
    mod_proxy模块支持与后端服务器的连接池功能,连接在按需创建在可以保存至连接池中以备进一步使用,连接池配置在ProxyPass中使用key=value定义,常用key如下
        min: 连接池最小等待线程
        max: 连接池最大等待线程
        loadfactor: 用于负载均衡集群配置中,定义对应后端服务器的权重,取值范围为1~100
        retry: 当apache将请求发送至后端服务器得到错误响应时等待多长时间后再重试,单位是秒


1、手动创建/etc/httpd/conf.d/vhosts.conf文件并编辑
    # vim /etc/httpd/conf.d/vhosts.conf
        <VirtualHost *:80>
            ServerName web1.kaikai.com
            ProxyVia On                            #是否添加web首部提示是以当前主机反代过去的
            ProxyRequests Off                      #关闭正向代理功能,如果使用反向代理就要关闭此功能
            ProxyPreserveHost On                   #如果启用的话客户端请求主机名,当前主机会直接把主机名反代到后端去,由后端解析客户端请求的主机名
            <Proxy *>                              #所有代理功能
                Require all granted                #允许哪些用户使用代理功能,此处是允许所有人访问,centos6的话使用Order allow,deny\n allow from all
            </Proxy>
            ProxyPass /status !                               #/status页面请求不转发到后端
            ProxyPass / http://192.168.119.101:8080/          #对URL"/"为结尾时,全部转发到101:8080/主机上
            ProxyPassReverse / http://192.168.119.101:8080/  
            <Location />                                      #允许哪些用户访问"/"这个URL
                Require all granted
            </Location>
        </VirtualHost>

2、proxy_module_ajp模块向后反代:
    # vim /etc/httpd/conf.d/vhosts.conf
        <VirtualHost *:80>
            ServerName web1.kaikai.com
            ProxyVia On                            #是否添加web首部提示是以当前主机反代过去的
            ProxyRequests Off                      #关闭正向代理功能,如果使用反向代理就要关闭此功能
            ProxyPreserveHost On                   #如果启用的话客户端请求主机名,当前主机会直接把主机名反代到后端去,由后端解析客户端请求的主机名
            <Proxy *>                              #所有代理功能
                Require all granted                #允许哪些用户使用代理功能,此处是允许所有人访问,centos6的话使用Order allow,deny\n allow from all
            </Proxy>
            ProxyPass / ajp://192.168.119.101:8009/          #对URL"/"为结尾时,全部转发到101:8009/主机上
            ProxyPassReverse / ajp://192.168.119.101:8009/  
            <Location />                                      #允许哪些用户访问"/"这个URL
                Require all granted
            </Location>
        </VirtualHost>      
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值