Linux下实现apache代理tomcat

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介:

apache+tomcat 
这里写图片描述
http版本2.4 
1.http+tomcat通信了解: 
   http和tomcat通信通过ajp,http,https协议进行通信 
   http与tomcat基于mod_jd和mod_proxy实现负载均衡 
1.安装http

a.下载:
apache http:http://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.25.tar.gz
arp:http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-1.5.2.tar.gz
arp-util:http://mirrors.tuna.tsinghua.edu.cn/apache//apr/apr-util-1.5.4.tar.gz
b.编译安装
1.先安装pcre-devel
    yum install pcre-devel2.先安装arp
    >tar -xzf apr-1.5.2.tar.gz
    >cd apr-1.5.2
    >./configure  --prefix=/usr/local/apr
    >make && make install3.安装arp-util
    >tar -xzf apr-util-1.5.4.tar.gz
    >cd apr-util-1.5.4
    >./configure --prefix=/usr/local/apt-util --with-apr=/usr/local/apr
    >make && make insatll4.安装httpd
    >tar -xzf httpd-2.4.25.tar.gz
    >cd httpd-2.4.
    >./configure --prefix=/usr/local/apache --sysconfdir=/etc/httpd24 --enable-so --enable--ssl --enable-cgi --enable-rewrite --with-zlib --with-pcre --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util --enable-modeles=most --enable-mpms-shared=all --with-mpm=event --enable-proxy --enable-proxy-http --enable-proxy-ajp --enable-balencer
    >make && make install5.配置httpd的环境
    (a).配置httpd服务启动文件
    vim /etc/init.d/http
    . /etc/rc.d/init.d/functions    if [ -f /etc/sysconfig/httpd ]; then
             . /etc/sysconfig/httpd    fi
    HTTPD_LANG=${HTTPD_LANG-"C"}
    INITLOG_ARGS=""
    apachectl=/usr/sbin/httpd/bin/apachectl
    httpd=/usr/local/httpd/bin/httpd}
    prog=httpd
    pidfile=${PIDFILE-/var/run/httpd/httpd.pid}
    lockfile=${LOCKFILE-/var/lock/subsys/httpd}
    RETVAL=0
    STOP_TIMEOUT=${STOP_TIMEOUT-10}
    start() {          echo -n $"Starting $prog: "
          LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
         RETVAL=$?         echo
         [ $RETVAL = 0 ] && touch ${lockfile}
        return $RETVAL
    }    stop() {
          status -p ${pidfile} $httpd > /dev/null          if [[ $? = 0 ]]; then
              echo -n $"Stopping $prog: "
              killproc -p ${pidfile} -d ${STOP_TIMEOUT} $httpd
          else
              echo -n $"Stopping $prog: "
              success          fi
          RETVAL=$?          echo
          [ $RETVAL = 0 ] && rm -f ${lockfile} ${pidfile}
    }    reload() {     echo -n $"Reloading $prog: "
      if ! LANG=$HTTPD_LANG $httpd $OPTIONS -t >&/dev/null; then
          RETVAL=6
          echo $"not reloading due to configuration syntax error"
          failure $"not reloading $httpd due to configuration syntax error"
      else
          # Force LSB behaviour from killproc
          LSB=1 killproc -p ${pidfile} $httpd -HUP
          RETVAL=$?          if [ $RETVAL -eq 7 ]; then
              failure $"httpd shutdown"
          fi
      fi
      echo
  }   case "$1" in
    start)
         start;;
    stop)         
     stop;;
    status)
         status -p ${pidfile} $httpd
         RETVAL=$?;;
   restart)
         stop
         start;;
   condrestart|try-restart)         if status -p ${pidfile} $httpd >&/dev/null; then
            stop
            start         fi;;
   force-reload|reload)
         reload;;
   graceful|help|configtest|fullstatus)         $apachectl $@
         RETVAL=$?;;
   *)         echo $"Usage: $prog {start|stop|restart|condrestart|try-restart|forc    e-reload|reload|status|fullstatus|graceful|help|configtest}"
          RETVAL=2
 esac
 exit $RETVAL

     (b).导出头文件
    ln -sv /usr/local/httpd/include /usr/include/httpd
    (c).导出帮助文件
        vim /etc/man.config
        MANPATH /usr/local/htppd/man
    (d).修改环境变量
        vim /etc/profile.d/httpd        export PATH=/usr/local/httpd/bin:$PATH        123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107

2.基于mod_proxy实现httd+tomcat 
   a.基于ajp协议

ProxyVia off        ProxyRequests offProxyPreserveHost off<Proxy *>
    Require all granted</Proxy>ProxyPass / ajp://192.168.100.34:8009/ProxyPassReverse / ajp://192.168.100.34:8009/<Location />
    Require all granted</Location>12345678910111234567891011

b.基于http协议

ProxyVia OffProxyRequests OffProxyPass / http://192.168.100.34:8080/ProxyPassReverse / http://192.168.100.34:8080/<Proxy *>
    Require all granted</Proxy><Location />Require all granted</Location>1234567891012345678910

c.参数详解

ProxyVia {On|Off|Full|Block}:用于控制http首部是否时哟您Via,主要用于多级代理中控制代理请求的流向,Full表示每个请求报文都会添加apache服务器的版本号信息,Block表示每个代理报文中Via都将被清除。
ProxyPreserveHost {On|Off}:启用此功能,代理会将用户请求报文中的Host行发送给后端服务器,而不使用Proxy_pass指定的服务器地址,如果在反向代理中支持虚拟主机,则需要开启此项。
ProxyRequests {On|Off}:是否开启正向代理,如果设置proxy_pass这个必须设置为OffProxyPass path url [key=value key=value..];将后端服务器url和本地某虚拟路径关联起来作为提供服务的;路径,path是当前服务器上的某虚拟路径,如果path以/结尾,这url也必须以/结尾。
    常用key如下:
    min:连接池的最小容量,初始化时的容量。
    max:连接池的最大容量,
    loadfactor:用于负载均衡集群配置中,定义对应后端服务器的权重
    retry:apache在后端服务器得到错误响应时,多长时间之后在重试,单位为秒,若一致没有响应,则会移除,重新上线以后会添加进来
ProxyPassReverse:用于让apache调整HTTP重定向响应报文中的Location,Context-Location及URL标签所对应的URL,在反向代理中必须使用此指令,防止重定向报文绕过proxy服务器1234567891012345678910

d.测试 
这里写图片描述
这里写图片描述
3.基于mod_jk实现http+tomcat 
   a.编译安装mod_jk

1.下载:
http://mirror.bit.edu.cn/apache/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.42-src.tar.gz2.安装:    >tar -xzf tomcat-connectors-1.2.42-src.tar.gz    >cd tomcat-connectors-/native/
    >./configure --with-apxs=/usr/local/http/bin/apxs(如果http是yum安装,请安装httpd-devel,rpm -ql httpd-devel找到apxs路径)    >make && make install12345671234567

b.配置/etc/httpd.d/httpd.conf

1.vim /etc/httpd.d/httpd.conf
LoadModule jk_module modules/mod_jk.so  //装载模块JkWorkersFile /etc/httpd/extra/workers.properties   //设置workers文件JkLogFile logs/mod_jk.log   //定义日志文件JkLogLevel debug        //日志级别JkMount /* TomcatA      //根下面的所有路径都转发给tomcatAJkMount /status/ stat1      //查看状态页面2.vim /etc/httpd/extra/workers.properties
worker.list=TomcatA,stat1
worker.TomcatA.port=8009worker.TomcatA.host=192.168.100.34worker.TomcatA.type=ajp13
worker.TomcatA.lbfactor=1worker.stat1.type=status        //状态页面12345678910111213141234567891011121314

c.workers.properties详解:

格式
worker.list = worker.name worker.nameworker.worer_name.property =valueproperty:
    host:tomcat实例所在主机
    port:所在端口
    connection_pool_minsize:最少保持在连接池中链接的个数
    connection_pool_timeout:连接池中链接超时时长
    retries:错误发生时重试次数
    socket_timeout:mod_jk等待worker响应时长,默认伪0,无限等待
    socket_keepalive:是否启动长链接,1表示启用
    lbfactor:worker的权重
    type:指定类型,值伪status表示状态信息,ajp13表示当前worker伪运行的一个实例,lb表示使用负载均衡1234567891011121312345678910111213

d.测试结果 
这里写图片描述

本文转自lnsaneLlinux博客51CTO博客,原文链接http://blog.51cto.com/lnsane784/1928007如需转载请自行联系原作者


Insane_linux

相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
安全 Linux 应用服务中间件
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
在Linux中,包过滤防火墙与代理应用防火墙有什么区别?有哪些相应的产品?
|
1月前
|
负载均衡 应用服务中间件 Apache
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
Tomcat负载均衡原理详解及配置Apache2.2.22+Tomcat7
37 3
|
3月前
|
应用服务中间件 Linux 网络安全
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
【Azure 应用服务】App Service for Linux 环境中为Tomcat页面修改默认的Azure 404页面
|
3月前
|
Ubuntu Linux 测试技术
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
在Linux中,已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近7天的访问日志,请问如何解决?
|
3月前
|
网络协议 安全 应用服务中间件
在Linux中,Tomcat8005、8009、8080三个端口的含义?
在Linux中,Tomcat8005、8009、8080三个端口的含义?
|
3月前
|
缓存 Java 应用服务中间件
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
在Linux中,Tomcat和Resin有什么区别,工作中怎么选择?
|
3月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
3月前
|
关系型数据库 Java MySQL
Linux安装JDK1.8 & tomcat & MariaDB(MySQL删减版)
本教程提供了在Linux环境下安装JDK1.8、Tomcat和MariaDB的详细步骤。这三个组件的组合为Java Web开发和部署提供了一个强大的基础。通过遵循这些简单的指导步骤,您可以轻松建立起一个稳定、高效的开发和部署环境。希望这个指导对您的开发工作有所帮助。
215 8
|
3月前
|
前端开发 Java 应用服务中间件
在Linux中,tomcat和nginx的区别是什么?
在Linux中,tomcat和nginx的区别是什么?
|
4月前
|
应用服务中间件 Linux 网络安全