httpd系列-02-反向代理tomcat-standalone

2016-09-25  本文已影响211人  hylexus

声明

该文章由大牛 马哥 的相关linux视频资料整理而来。若认为内容侵权请及时通知本人。

相关文章


[TOC]

前言

为什么使用反向代理?

有哪些实现方式?

能实现反向代理的httpd模块,有以下两种:

** mod_proxy和mod_jk都提供两种连接方式,即http协议和AJP(二进制格式传输)协议 **

所以,更进一步有以下方式来使用apache/httpd实现反向代理:

配置示例

前提

需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和mod_proxy_balancer等模块

可通过 service httpd -D DUMP_MODULES | grep proxy来查看:

[root@c2 test-1]# service httpd -D DUMP_MODULES | grep proxy
 proxy_module (shared)
 proxy_connect_module (shared)
 proxy_ftp_module (shared)
 proxy_http_module (shared)
 proxy_fcgi_module (shared)
 proxy_scgi_module (shared)
 proxy_ajp_module (shared)
 proxy_balancer_module (shared)
 proxy_express_module (shared)

参数说明

另外,mod_proxy模块在httpd 2.1的版本之后支持与后端服务器的连接池功能,连接按需创建。
连接池大小或其它设定可以通过在ProxyPass中使用key=value的方式定义。常用的key如下所示:

mod_proxy

mod_proxy + HTTP + tomcat(standalone)

<VirtualHost *:80>
    ProxyVia Off
    ProxyRequests Off
    ProxyPreserveHost Off
    <Proxy *>
      Require all granted
    </Proxy>
      ProxyPass  /  http://c2:8080/
      ProxyPassReverse  /  http://c2:8080/
    <Location  / >
      Require all granted
    </Location>
</VirtualHost>

mod_proxy + AJP + tomcat(standalone)

<VirtualHost *:80>
    ProxyVia On
    ProxyRequests Off
    ProxyPreserveHost Off
    <Proxy *>
      Require all granted
    </Proxy>
      ProxyPass  /  ajp://c2:8009/
      ProxyPassReverse  /  ajp://c2:8009/
    <Location  / >
      Require all granted
    </Location>
</VirtualHost>

mod_jk

mod_jk是ASF的一个项目,是一个工作于apache端基于AJP协议与Tomcat通信的连接器,它是apache的一个模块,是AJP协议的客户端(服务端是Tomcat的AJP连接器)。

环境准备

编译安装mod_jk connector

# 下载
wget http://apache.fayea.com/tomcat/tomcat-connectors/jk/tomcat-connectors-1.2.41-src.tar.gz
# 解压
tar -zxvf tomcat-connectors-1.2.41-src.tar.gz
cd tomcat-connectors-1.2.41-src/native/


# 编译安装
./configure --with-apxs=/usr/local/apache244/bin/apxs
make && make install

mod_jk + AJP + tomcat(standalone)

apache/httpd配置

# 加载模块
LoadModule  jk_module  modules/mod_jk.so
# 篇日志文件路径
JkWorkersFile  /etc/httpd/extra/workers.properties
# 日志文件路径
JkLogFile  logs/mod_jk.log
# 日志级别
JkLogLevel  debug
# tomcatA和tomcat配置文件server.xml中Engine标签的jvmRoute属性一致
JkMount  /*  tomcatA
JkMount  /status/  stat1

/etc/httpd/extra/workers.properties

worker.list=tomcatA,stat1
worker.tomcatA.port=8009
worker.tomcatA.host=c2
worker.tomcatA.type=ajp13
worker.tomcatA.lbfactor=1
worker.stat1.type = status

tomcat server.xml

<Engine name="Catalina" defaultHost="c2" jvmRoute="tomcatA">

  <Realm className="org.apache.catalina.realm.LockOutRealm">
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
           resourceName="UserDatabase"/>
  </Realm>

  <Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b" />

  </Host>


  <Host name="c2" appBase="/web" unpackWARs="true" autoDeploy="true">
    <Context path="" docBase="webapps/test-1" reLoadable="true"/>
  </Host>
</Engine>

属性说明

上一篇 下一篇

猜你喜欢

热点阅读