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(需要编译安装) 单节点 配置 ...
随机推荐
- Batch Sort
Batch Sort time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- UVA 11992 线段树
input r c m r<=20,1<=m<=20000 m行操作 1 x1 y1 x2 y2 v add v 2 x1 y1 x2 y2 v s ...
- 10款免费Bootstrap后台模板演示及下载
自从有了类似Bootstrap这样强大的前端框架之后,无论我们是做静态页面,还是做网站主题,着实方便很多.即便有很多类似的其他国产.海外的前端框架比较,Bootstrap用户量以及功能文档还是比较大的 ...
- Dom+2016/4/20
元素.parentNode父节点 offsetParent
- 空指针错误 java.lang.NullPointerException
使用基本的JAVA数据类型,变量的值要么已经是默认值,如果没有对其正常赋值,程序便 不能通过编译,因此使用基本的JAVA数据类型(double,float,boolean,char,int,long) ...
- socket常见几种异常
第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行newServerSocket(port)(po ...
- HDU - 5234 Happy birthday
Problem Description Today is Gorwin’s birthday. So her mother want to realize her a wish. Gorwin say ...
- Intent之间无法传递大数据的替代方法
/** * TODO: Activity之间传递list,对象等工具类 * * @author * @date 2014-9-12 下午5:35:38 * @version 0.1.0 */ publ ...
- maven实战_测试覆盖率插件使用
原文:http://www.cnblogs.com/yucongblog/p/5297051.html 1.环境准备 <project> ... <reporting> < ...
- PHP中将ip地址转成十进制数的两种实用方法
As we all know that long2ip works as ip1.ip2.ip3.ip4 (123.131.231.212) long ip => (ip1 * 256 * 25 ...