`

Tomcat一点一滴之(三)整合Apache、Nginx

阅读更多

Tomcat一点一滴之(三)整合Apache、Nginx

前言:上两篇说了如何安装、部署Tomcat。可是有个问题来了,当Tomcat需要处理静态页面时就比较慢了,至少不如Apache,所以就出现了Apache+Tomcat的整合。
不过网上有人总结了关于这两个开源软件整合还有一些原因:

 1、聚合。使用Apache做为前端大门,后端部署多个Tomcat实例,如果一个实例出现问题,Apache将忽略这个实例,让系统管理员高枕无忧。当然如果在硬件负载均衡设备的基础上利用Tomcat的聚合能力就没有必要进行集成了。
2、聚合/安全。当然如果使用Apache做为门户来区分拥有不同URL命名空间的不同的Tomcat。每个Tomcat都成为一个保护区域,从安全角度 讲,仅仅需要主要Apache 服务器。在这个方案中,Apache已经变成一个轻量级的代理服务器。
3、安全。就安全来讲,集成和不集成都是争论双方的焦点。Java有安全管理功能,Apache对安全考虑的也是比较周道的。可以使用Google来查阅 这方面的资料。在某个场合中,集成是上上策,但是另外一个场合,可能不集成略胜一筹。但是如果集成Apache和Tomcat,一定要记住:你需要同时关 注Apache和Tomcat的安全,而不是一个。
4、附加因素。在Apache上运行perl,PHP和CGI都是很普通的事情。但是对Tomcat来说,不仅速度忙,而且不太正式。Apache可以任意添加上百个附加软件,当然Tomcat也有这个能力,但是这样的模块还没有开发出来。
5、装饰。当Apache做为Tomcat前端时,你可以完成大量Tomcat不支持或没有现成代码的装饰工作。没有必要重新为Tomcat开发一套类似 为Apache的mod_headers,mod_rewrite, and mod_alias。
6、速度。Apache的静态网页处理速度高于Tomcat。但是除非你的流量很大,这一点时没有意义的。在另外一些情况下,Tomcat要比Apache快。所以两者结合可以加速你的站点。
7、Socket handling(姑且认为是连接)/系统稳定性。Apache在处理错误链接上优于Tomcat。主要原因是Tomcat所有的连接都交给JVM来处 理,而JVM是跨平台的,问题是跨平台的优化是一个严峻的考验。大部分时间java程序都是正常的,但是当情况非常恶劣时,例如:非常频繁的掉线,无效数 据包,无效IP的无效请求。Apache比基于JVM的程序要好。
下面就先来说下Apache+Tomcat的集成方法:
apache与tomcat负载集群集成方法有3种jk、jk_proxy、http_proxy
本次实验为jk的这种方式,好了,开始:
一、准备包文件,安装:
需要用到的包:
httpd-2.2.16.tar.gz                        #Apache源码包
apache-tomcat-6.0.35.tar.gz                #Tomcat压缩包
tomcat-connectors-1.2.30-src.tar.gz        #连接Apache和Tomcat(mod_jk)

1.首先安装Apache

  1. # tar xzvf httpd-2.2.0.tar.gz  
  2. # cd httpd-2.2.0  
  3. # ./configure --prefix=/usr/local/apache2 --enable-so   #因做测试,最简单的编译参数即可  
  4. # make && make install  

2.再安装Tomcat(需先安装java环境,参照第一篇)

  1. # cp apache-tomcat-6.0.35.tar.gz /usr/local  
  2. # cd /usr/local  
  3. # tar zxf apache-tomcat-6.0.35.tar.gz  
  4. # mv apache-tomcat-6.0.35 tomcat 

3.最后安装连接器(mod_jk)

  1. # tar zxf tomcat-connectors-1.2.30-src.tar.gz  
  2. # cd tomcat-connectors-1.2.30-src/native  
  3. # ./configure --with-apxs=/usr/local/apache2/bin/apxs     
  4. # make  
  5. # cp ./apache-2.0/mod_jk.so /usr/local/apache2/modules/ #拷贝至Apache指定模块目录 

二、配置其相关参数文件
1.首先是Apache相关的,刚刚安装了mod_jk模块,也已经拷贝到Apache的模块目录中,下面就是让Apache来支持它。
需要在Apache的conf目录下新建两个配置文件:
mod_jk.conf              #模块本身的配置文件
workers.properties       #定义Tomcat工作的的配置文件

vim mod_jk.conf

  1. JkWorkersFile /usr/local/apache2/conf/workers.properties         #指定workers.properties的位置  
  2. JkLogFile /usr/local/apache2/logs/mod_jk.log                     #指定jk的日志输出文件  
  3. JkLogLevel info                                                  #指定日志级别  
  4. JkLogStampFormat "[%a %b %d %H:%M:%S %Y]"                        #指定日志输出的时间戳格式  
  5. JkOptions  +ForwardKeySize +ForwardURICompat -ForwardDirectories #JkOptions指示发送给SSL密钥大小  
  6. JkRequestLogFormat "%w %V %T"                                    #指定日志中时间戳后面的内容:%w:工作的tomcat实例 %V:目标ip %T:耗时  
  7. JkMount /servlet/*  worker1                                      #指URL指向如果有servlet,则让worker1去处理  
  8. JkMount /*.jsp worker1                                           #指URL为/*.jsp的页面,让worker1去处理 

vim workers.properties

  1. worker.list=worker1                                              #指定需要工作的tomcat节点,如多个用“,”分割  
  2. worker.worker1.type=ajp13                                        #指定worker1使用ajpv13协议与Tomcat进程通讯  
  3. worker.worker1.host=localhost                                    #指定worker1的位置  
  4. worker.worker1.port=8009                                         #指定worker1的工作端口  
  5. worker.worker1.cachesize=10                                      #指定worker1的缓存大小  
  6. worker.worker1.cache_timeout=600                                 #指定worker1的cache中保留一个打开的socket的时间  
  7. worker.worker1.socket_keepalive=1                                #此配置项为当Apache和Tomcat之间有防火墙时,让os每隔多久想未激活的连接发送KEEP_ALIVE信息,防止防火墙切断未激活的网络连接  
  8. worker.worker1.socket_timeout=300                                #指定worker1上的连接在未激活的状况下持续多久,Apache将主动切断 

下面就是修改Apache的主配置文件httpd.conf
a.在DirectoryIndex中添加 index.jsp       ###166行
b.修改为:DocumentRoot "/var/wwwroot"    ###104行
c.修改为:<Directory "/var/wwwroot">     ###131行                #可能行数会有少于差异
d.在最后面添加:
LoadModule jk_module modules/mod_jk.so
Include /usr/local/apache2/conf/mod_jk.conf

2.下面就是稍稍修改下Tomcat的配置文件server.xml就可以了。
在</Host>标记前添加:
<Context path="" docBase="/var/wwwroot" reloadable="true" crossContext="true"> </Context>   #指定项目目录

配置到此完成。下面测试:

三、测试验收
mkdir /var/wwwroot
echo "Hello,The time is <%= new java.util.Date() %>" >> /var/wwwroot/index.jsp  #新建测试网页

/usr/local/apache2/bin/apachectl start   #启动Apache
/usr/local/tomcat/bin/startup.sh         #启动Tomcat

登录访问:http://ip 或者http://ip:8080  两者应该是一样的内容。

即 网页上显示当前系统时间:
Hello,the time is Tue Feb 26 11:18:04 CST 2013

以上就是Apache、Tomcat集成的简单方法。

——————————————————————
假如对并发要求比较高,那么就可以考虑Nginx了。这也是Nginx很火的原因之一,下面就来说说这款轻量级的Web服务器如何和Tomct集成。
实验:Nginx+Tomcat
一、安装并配置Nginx
需要用到的包:
nginx-1.0.10.tar.gz      #Nginx的源码包
pcre-8.10.tar.gz         #Nginx依赖的轻量级的函数库

1.基本安装

  1. # tar zxf pcre-8.10.tar.gz   
  2. # cd pcre-8.10  
  3. # ./configure  
  4. # make && make install  
  5.  
  6. # tar zxf nginx-1.0.10.tar.gz  
  7. # cd nginx-1.0.10  
  8. # ./configure --with-http_stub_status_module --with-http_ssl_module  #启动server状态和https模块  
  9. # make && make install 

二、配置相关文件
Nginx安装完毕默认的路径为:/usr/local/nginx
在/usr/local/nginx/conf下新建一个代理配置文件:
vim proxy.conf

  1. proxy_redirect          off;                     #关闭代理重定向  
  2. proxy_set_header        Host $host;  
  3. proxy_set_header        X-Real-IP $remote_addr;  #获取真实ip  
  4. #proxy_set_header       X-Forwarded-For   $proxy_add_x_forwarded_for; #获取代理者的真实ip  
  5. client_max_body_size    10m;                     #允许客户端请求的最大单文件字节数  
  6. client_body_buffer_size 128k;                    #缓冲区代理缓冲用户端请求的最大字节数  
  7. proxy_connect_timeout   90;                      #后端服务器连接的超时时间  
  8. proxy_send_timeout      90;                      #后端服务器数据回传时间  
  9. proxy_read_timeout      90;                      #后端服务器处理请求的时间  
  10. proxy_buffer_size       4k;                      #设置缓冲区大小  
  11. proxy_buffers           4 32k;                   #设置缓冲区的大小和数量  
  12. proxy_busy_buffers_size 64k;                     #用来控制同时传输到客户端的buffer数量  
  13. proxy_temp_file_write_size 64k;                  #设定缓存文件夹大小,大于这个值,将从upstream服务器传 

再修改Nginx的主配置文件nginx.conf
在server{}中添加如下参数:
root         /var/wwwroot;                       #指定网页的根目录
        location ~ .*.jsp$ {                     #定义所有以.jsp结尾
                index index.jsp;                 #默认网页为index.jsp
                proxy_pass http://localhost:8080;#代理地址为本机的8080端口
                }
测试Nginx配置文件准确性:
/usr/local/nginx/sbin/nginx -t
如下显示,则没有问题:
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

/usr/local/nginx/sbin/nginx  #启动nginx

netstat -antp|grep nginx     #查看nginx端口是否正常开启

三、测试
本实验是在上面Apache+Tomcat的基础上继续的,所以Tomcat我就没再装。也就是上面做的网站的根目录在/var/wwwroot,在上面已经做好了测试网页。

所以打开浏览器直接输入:http://ip/index.jsp   即可看到效果。

到此Nginx+Tomcat已经完成,但只是简单的集成,下一篇将继续说下Apache+Tomcat集群配置、Nginx+Tomcat集群配置、以及Session同步。

 

后续:Tomcat一点一滴之(三)集群部署以及session共享
 

Tomcat全系列笔记:

Tomcat一点一滴之(一)基本搭建 

Tomcat一点一滴之(二)配置应用

Tomcat一点一滴之(三)整合Apache、Nginx

Tomcat一点一滴之(四)集群部署以及session共享

Tomcat一点一滴之(五)性能调优

本文出自 “____哊.時^随记” 博客,请务必保留此出处http://xtony.blog.51cto.com/3964396/1140591

分享到:
评论

相关推荐

    linux下Nginx+tomcat整合的安装与配置

    ### Linux下Nginx+Tomcat整合的安装与配置详解 在现代的Web服务器架构中,Nginx作为高性能的反向代理服务器和负载均衡器,常被用来与Tomcat等应用服务器配合使用,以提高网站的响应速度、稳定性和安全性。本文将...

    nginx和tomcat的整合

    ### Nginx与Tomcat整合的关键知识点 #### 一、Nginx与Tomcat整合概述 - **背景介绍**:Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行。其特点是占有内存少...

    Tomcat6集群 + Apache + Nginx均衡负载及其测试

    Tomcat6集群 + Apache + Nginx 均衡负载 以及apache 的ab进行压力测试的方法

    apache+nginx+tomcat

    Apache、Nginx 和 Tomcat 是在 Web 服务器领域中常用的三个组件,它们各自承担着不同的职责,并且经常被组合使用以实现高效、稳定的网站部署和应用服务。 Apache HTTP Server 是世界上最广泛使用的开源 Web 服务器...

    Apache Tomcat JBOSS Nginx区别

    Apache Tomcat JBOSS Nginx区别 Apache Tomcat 和 JBOSS 是两种不同的服务器软件,而 Nginx 是一种高性能的 HTTP 服务器。下面我们来详细比较它们的区别: 一、Apache 和 Tomcat Apache 是一个 Web 服务器,...

    nginx整合tomcat

    nginx整合tomcat 1、准备软件(存放在目录/home/sofeware下) agentzh-headers-more-nginx-module-v0.15rc2-0-g2c629de.tar.gz #支持隐藏头部信息 (不是必须,觉得需要就安装吧) nginx-upstream-jvm-route-0.1.tar....

    Nginx+tomcat配置集群负载均衡实例

    在IT行业中,构建高效、可扩展的Web服务是至关重要的,而"Nginx+Tomcat"的组合常被用于实现这一目标。本实例将详细阐述如何通过Nginx配置集群负载均衡,以实现动静分离,提升系统性能和稳定性。 首先,Nginx是一款...

    windows下配置nginx反向代理tomcat

    ### Windows 下配置 Nginx 反向代理 Tomcat 在 Windows 环境下配置 Nginx 作为 Tomcat 的反向代理服务器是一项常见的任务,主要用于实现负载均衡、提高安全性及提升性能等目的。本文将从下载 Nginx 开始,详细介绍...

    apache-tomcat-7.0.75.zip

    Apache是普通服务器,本身只支持html即普通网页。不过可以通过插件支持php,还可以与Tomcat连通(单向Apache连接Tomcat,就是说通过Apache可以访问...Apache,nginx,tomcat并称为网页服务三剑客,可见其应用度之广泛。

    Tomcat、Apache、Nginx、IIS、Weblogic中间件等保测评作业指导书V1.1

    等保常见中间件测评指导书(供参考),也可作为中间件加固参考使用

    Nginx+KeepAlived+Tomcat负载架构

    ### Nginx+KeepAlived+Tomcat负载架构详解 #### 一、概述 随着互联网应用的日益增多,单一服务器已经难以满足高并发、高可用性的需求。因此,越来越多的企业开始采用集群技术来提高系统的稳定性和扩展性。本文将...

    apache-tomcat-7.0.54+memcached+nginx

    Apache Tomcat 7.0.54 是一个广泛使用的开源Java Servlet容器,它实现了Java EE Web应用程序规范。在这个场景中,我们关注的是如何在Tomcat 7集群中配置和使用memcached以及配合Nginx进行负载均衡。Memcached是一种...

    nginx+tomcat负载整合完整实例

    这个实例涵盖了`nginx`与`tomcat`的整合、`nginx`的反向代理与负载均衡配置以及`tomcat`集群的设置。这样的架构有助于提高系统性能,当某个`tomcat`实例出现问题时,`nginx`能够自动将流量导向其他正常运行的实例,...

    apache到nginx配置文件转换工具

    一个开源的Linux下运行的命令行工具,能将Apache的配置文件转换成相应的Nginx的配置文件。本工具能自动将Apache Web服务器的配置文件转化成Nginx的配置文件,减少WEB服务器迁移的工作量。 该工具从Apache Web服务器...

    centos7 部署tomcat8,jdk7,nginx,防火墙

    本教程将详述如何在CentOS 7上部署Tomcat 8、JDK 7以及Nginx,并进行必要的防火墙配置,以创建一个高效、安全的Web服务器环境。 首先,我们来安装JDK 7,它是运行Java应用的基础。在CentOS 7中,可以通过官方的...

    centos nginx安装及和tomcat整合

    **三、Nginx与Tomcat的整合** 1. **配置Nginx**: 编辑 `/etc/nginx/nginx.conf` 或者创建一个虚拟主机配置文件,例如 `/etc/nginx/conf.d/tomcat.conf`。 2. **反向代理配置**: 在配置文件中添加以下内容,...

    Apache + nginx + resin 详细配置

    Apache、Nginx和Resin都是在Web服务器领域中广泛使用的软件。Apache是经典的HTTP服务器,Resin是一款高性能的Java应用服务器,而Nginx以其高效的反向代理和负载均衡能力著称。将这三者结合使用,可以构建出一个高...

Global site tag (gtag.js) - Google Analytics