Tomcat与Nginx、Apache结合的相关实践
一、LNMT
简介:在Tomcat服务器前端部署一个Nginx(反向代理),当用户请求静态资源时,由Nginx服务器负责响应;当用户请求java应用程序资源时,由后端的Tomcat服务器进行响应。
环境:
OS:Linux CentOS 6.8
Tomcat 6.0, IpAddr:192.168.1.101
Nginx 1.10.2, IpAddr:192.168.1.102
配置:
Tomcat端配置:
/*定义一个主机*/
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
/*定义一个Context:testapp应用程序*/
<Context path="/test" docBase="testapp" reloadable="true" />
/*定义第二个应用程序:test-1app*/
<Context path="/test-1" docBase="test-1app" reloadable="true" />
</Host>
Nginx端配置:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
/*处理静态资源请求*/
location / {
}
/*Tomcat处理URL以jsp和do结尾的请求*/
location ~*\.(jsp|do)$ {
proxy_pass http://192.168.1.101:8080;
}
/*Tomcat处理testapp应用请求*/
location /test/ {
proxy_pass http://192.168.1.101:8080/test/index1.jsp;
}
/*Tomcat处理test-1app应用请求*/
location /test-1/demo.jsp {
proxy_pass http://192.168.1.101:8080;
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
二、LAMT
简介:与LNMT类似,只不过是httpd作为反代服务器。但httpd反代tomcat有三种方式:
①基于httpd的proxy_module和proxy_http_module的反代
②基于httpd的proxy_module和proxy_ajp_module的反代
③基于httpd的mod_jk模块的反代(需自行编译安装)
环境:
OS:Linux CentOS 6.8
Tomcat 6.0, IpAddr:192.168.1.101
httpd 2.2.15, IpAddr:192.168.1.102
配置:
第一种方式的实现:
Tomcat端配置与Nginx时配置相同,无需修改。
Httpd端配置:
NameVirtualHost 192.168.1.102:80 <VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080
ProxyPassReverse / http://192.168.1.101:8080
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.c.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080/test/index1.jsp
ProxyPassReverse / http://192.168.1.101:8080/test/index1.jsp
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.d.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / http://192.168.1.101:8080/test-1/demo.jsp
ProxyPassReverse / http://192.168.1.101:8080/test-1/demo.jsp
<Location />
Allow from all
</Location>
</VirtualHost>
如果是httpd2.4+版本,配置如下:
<VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
<Proxy *>
Require all granted
</Proxy>
ProxyPass / http://192.168.1.101:8080
ProxyPassReverse / http://192.168.1.101:8080
<Location />
Require all granted
</Location>
</VirtualHost>
第二种方式实现:
Tomcat端无需变动
Httpd端仅需修改协议和端口即可,配置如下:
NameVirtualHost 192.168.1.102:80 <VirtualHost 192.168.1.102:80>
ServerName www.b.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / ajp://192.168.1.101:8009
ProxyPassReverse / ajp://192.168.1.101:8009
<Location />
Allow from all
</Location>
</VirtualHost> <VirtualHost 192.168.1.102:80>
ServerName www.c.com
ProxyRequests Off
ProxyVia On
ProxyPreserveHost On
ProxyPass / ajp://192.168.1.101:8009/test/index1.jsp
ProxyPassReverse / ajp://192.168.1.101:8009/test/index1.jsp
<Location />
Allow from all
</Location>
</VirtualHost>
第三种方式实现:
请求流程:Client-->http-->httpd-->mod_jk(ajp)-->tomcat(http connector)
首先安装mod_jk模块:tomcat-connectors-1.2.42-src.tar.gz(依赖httpd-devel)
展开归档后进入native目录,执行
# ./configure --with-apxs=/usr/sbin/apxs
# make && make install
安装完成,开始配置,
Tomcat端主机只需要在之前的基础上需改一个地方:

在Engine中加入jvmRoute属性即可。
Httpd端的配置,需要两个配置文件:
①/etc/httpd/conf.d/workers.propeties
worker.list=srv_A,StatA
worker.srv_A.host=192.168.1.101
worker.srv_A.port=8009
worker.Tomcat.type=ajp13
worker.StatA.type=status
②/etc/httpd/conf.d/mod_jk.conf
/*装载jk_module 路径是相对于/etc/httpd/下*/
LoadModule jk_module modules/mod_jk.so JkWorkersFile /etc/httpd/conf.d/workers.properies
JkLogFile logs/mod_jk.log
JkLogLevel notice
JkMount /* srv_A 此处的"/"是以webapps为根
JkMount /jk_status StatA
Tomcat与Nginx、Apache结合的相关实践的更多相关文章
- Tomcat 搭配 Nginx 还是 Apache 呢?
Apache .Tomcat.Nginx的区别, 哪个与Tomcat搭配效率高? 一. 定义: 1. Apache Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机 ...
- Apache/Tomcat/JBOSS/Nginx区别
先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...
- tomcat 与 nginx,apache的区别
tomcat 与 nginx,apache的有什么区别 回答一: 题主说的Apache,指的应该是Apache软件基金会下的一个项目——Apache HTTP Server Project:Nginx ...
- 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息【转】
转自: 查看nginx | apache | php | tengine | tomcat版本的信息以及如何隐藏版本信息 - 追马 - 51CTO技术博客http://lovelace.blog.51 ...
- 简析 Tomcat 、Nginx 与 Apache 的区别
简析 Tomcat .Nginx 与 Apache 的区别 本文讲的是简析 Tomcat .Nginx 与Apache的区别, 经常在用 apache 和 tomcat 等这些服务器,可是总感觉还是不 ...
- 浅析Apache/Tomcat/JBOSS/Nginx之区别
浅析Apache/Tomcat/JBOSS/Nginx服务器之区别 一.Apache和Tomcat的区别 Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上, ...
- Apache/Tomcat/JBOSS/Nginx区别(转)
先说Apache和Tomcat的区别: Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. ...
- nginx,apache,tomcat的区别
nginx与apache 这里说的apche指apache http server ,与nginx都属于http服务器软件,主要处理静态资源. http server关心的是http协议层面的传输和访 ...
- Tomcat负载均衡、调优核心应用进阶学习笔记(三):LNMT nginx+tomcat、LAMT apache+tomcat、session会话保持、不错的站点
文章目录 LNMT nginx+tomcat LAMT apache+tomcat 基于mod_proxy 单节点 配置基于mod_proxy的负载均衡 基于mod_jk(需要编译安装) 单节点 配置 ...
随机推荐
- Food on the Plane
Food on the Plane time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- iOS 枚举写法
1.第一种 typedef enum { kPRStateNormal = 0, kPRStatePulling = 1, kPRStateLoading = 2, kPRStateHitTheEnd ...
- 最小点集覆盖/HDU2119
题目连接 先试一下题/?/ 最小点集覆盖=最大匹配 /*根据i.j建图,跑一边最大匹配 */ #include<cstdio> #include<cstring> using ...
- ubuntu11.10server 安装php-redis插件
1.下载php-redis插件 1 sudo wget https://github.com/nicolasff/phpredis/archive/master.zip 2.安装 1 2 3 4 5 ...
- android--listview设置高度
android:layout_height="25dp"这么设置根本就没有用. 我们必须要设置android:minHeight="25dp"这样才行.
- c# 执行js的方法
http://www.cnblogs.com/wuhuacong/archive/2010/11/08/1871866.html 为了有效阻止恶意用户的攻击,一般登录都会采用验证码方式方式处理登录,类 ...
- ref和out,以及一般方法的引用参数和值参数寻解
对与ref和out的区别,我相信很多人都知道,这里我简单罗列下: 1.首先ref和out两种类型的参数都是可以将方法内对参数的修改传递到方法外面 2.ref参数需要在传递之前初始化,out不需要,ou ...
- java.net.URLEncode编码 与 URLDecode解码问题
1.java内部加密和解密 String mytext = java.net.URLEncoder.encode("中国", "utf-8"); String ...
- std::string
/************************************************************************* > File Name: string.cp ...
- Permission denied: user=xxj, access=WRITE, inode="user":hadoop:supergroup:rwxr-xr-x
在windows中运行eclipse时报错Permission denied: user=xxj, access=WRITE, inode="user":hadoop:superg ...