tomcat配置及基于nginx、apache反向代理tomcat

如今,基于Web的应用越来越多,传统的Html已经满足不了如今的需求。我们需要一个交互式的Web,于是便诞生了各种Web语言。如Asp,Jsp,Php等。当然,这些语言与传统的语言有着密切的联系,如Php基于C和C 语言,Jsp基于Java语言。Tomcat即是一个Jsp和Servlet的运行平台。

Tomcat是一个免费的开源的Serlvet容器,它是Apache基金会的Jakarta项目中的一个核心项目,由Apache,Sun和其它一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet和Jsp规范总能在Tomcat中得到体现。Tomcat被JavaWorld杂志的编辑选为2001年度最具创新的java产品,可见其在业界的地位。

Tomcat最新版本是4.0x.4.0x与3.x的架构不同,而是重新设计的。Tomcat4.0x中采用了新的Servlet容器:Catalina,完整的实现了Servlet2.3和Jsp1.2规范。Tomcat提供了各种平台的版本供下载,可以从http://jakarta.apache.org上下载其源代码版或者二进制版。由于Java的跨平台特性,基于Java的Tomcat也具有跨平台性。与传统的桌面应用程序不同,Tomcat中的应用程序是一个WAR(WebArchive)文件。WAR是Sun提出的一种Web应用程序格式,与JAR类似,也是许多文件的一个压缩包。这个包中的文件按一定目录结构来组织:通常其根目录下包含有Html和Jsp文件或者包含这两种文件的目录,另外还会有一个WEB-INF目录,这个目录很重要。通常在WEB-INF目录下有一个web.xml文件和一个classes目录,web.xml是这个应用的配置文件,而classes目录下则包含编译好的Servlet类和Jsp或Servlet所依赖的其它类(如JavaBean)。通常这些所依赖的类也可以打包成JAR放到WEB-INF下的lib目录下,当然也可以放到系统的CLASSPATH中,但那样移植和管理起来不方便。

在Tomcat中,应用程序的部署很简单,你只需将你的WAR放到Tomcat的webapp目录下,Tomcat会自动检测到这个文件,并将其解压。你在浏览器中访问这个应用的Jsp时,通常第一次会很慢,因为Tomcat要将Jsp转化为Servlet文件,然后编译。编译以后,访问将会很快。另外Tomcat也提供了一个应用:manager,访问这个应用需要用户名和密码,用户名和密码存储在一个xml文件中。通过这个应用,辅助于Ftp,你可以在远程通过Web部署和撤销应用。当然本地也可以。

Tomcat不仅仅是一个Servlet容器,它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,它的处理静态Html的能力就不如Apache.我们可以将Tomcat和Apache集成到一块,让Apache处理静态Html,而Tomcat处理Jsp和Servlet.这种集成只需要修改一下Apache和Tomcat的配置文件即可。

另外,Tomcat提供Realm支持。Realm类似于Unix里面的group.在Unix中,一个group对应着系统的一定资源,某个group不能访问不属于它的资源。Tomcat用Realm来对不同的应用(类似系统资源)赋给不同的用户(类似group)。没有权限的用户则不能访问这个应用。

Tomcat提供三种Realm,1:JDBCRealm,这个Realm将用户信息存在数据库里,通过JDBC获得用户信息来进行验证。2:JNDIRealm,用户信息存在基于LDAP的服务器里,通过JNDI获取用户信息。3:MemoryRealm,用户信息存在一个xml文件里面,上面讲的manager应用验证用户时即使用此种Realm.通过Realm我们可以方便地对访问某个应用的客户进行验证。

在Tomcat4中,你还可以利用Servlet2.3提供的事件监听器功能,来对你的应用或者Session实行监听。Tomcat也提供其它的一些特征,如与SSL集成到一块,实现安全传输。还有Tomcat也提供JNDI支持,这与那些J2EE应用服务器提供的是一致的。说到这里我们要介绍一下通常所说的应用服务器(如WebLogic)与Tomcat有何区别。应用服务器提供更多的J2EE特征,如EJB,JMS,JAAS等,同时也支持Jsp和Servlet.而Tomcat则功能没有那么强大,它不提供EJB等支持。

基于Tomcat的开发其实主要是Jsp和Servlet的开发,开发Jsp和Servlet非常简单,你可以用普通的文本编辑器或者IDE,然后将其打包成WAR即可。我们这里要提到另外一个工具Ant,Ant也是Jakarta中的一个子项目,它所实现的功能类似于Unix中的make.你需要写一个build.xml文件,然后运行Ant就可以完成xml文件中定义的工作,这个工具对于一个大的应用来说非常好,我们只需在xml中写很少的东西就可以将其编译并打包成WAR.事实上,在很多应用服务器的发布中都包含了Ant.另外,在Jsp1.2中,可以利用标签库实现Java代码与Html文件的分离,使Jsp的维护更方便。

Tomcat也可以与其它一些软件集成起来实现更多的功能。如与上面提到的JBoss集成起来开发EJB,Cocoon(Apache的另外一个项目)集成起来开发基于Xml的应用,与OpenJMS集成起来开发JMS应用,除了我们提到的这几种,可以与Tomcat集成的软件还有很多。Tomcat确实是一个很好的工具,不仅仅因为其免费,功能强大,更因为其开放性。如今,开源软件越来越收到人们的重视,Linux就是一个成功的典型。人们不再限于只使用软件,而且已经关心起软件的具体实现。我们有理由相信Tomcat会走得更远。

一、安装配置tomcat:

1)安装tomcat必须先安装jdk:

lftp 172.16.0.1:~> cd pub/Sources/6.x86_64/jdk/

jdk-7u9-linux-x64.rpm

tomcat> get apache-tomcat-7.0.42.tar.gz

[[email protected] ~]# rpm -ivh jdk-7u9-linux-x64.rpm

Preparing...                ########################################### [100%]

1:jdk                    ########################################### [100%]

2)编辑配置文件让java工作起来

[[email protected] ~]# vim /etc/profile.d/java.sh

export JAVA_HOME=/usr/java/lates

export PATH=$JAVA_HOME/bin:$PATH

[[email protected] ~]# . /etc/profile.d/java.sh

3)安装tomcat:

[[email protected] ~]# tar xf apache-tomcat-7.0.42.tar.gz -C /usr/local

[[email protected] ~]# cd /usr/local

[[email protected] local]# ln -sv apache-tomcat-7.0.42 tomcat

`tomcat‘ -> `apache-tomcat-7.0.42‘

[[email protected] local]# cd tomcat

4)导出文件路径

[[email protected] tomcat]# vim /etc/profile.d/tomcat.sh

export CATALINA_HOME=/usr/local/tomcat

export PATH=$CATALINA_HOME/bin:$PATH

[[email protected] tomcat]# . /etc/profile.d/tomcat.sh

5)为tomcat提供启动服务脚本

[[email protected] latest]# vim /etc/init.d/tomcat

!/bin/sh

# Tomcat init script for Linux.

#

# chkconfig: 2345 96 14

# description: The Apache Tomcat servlet/JSP container.

# JAVA_OPTS=‘-Xms64m -Xmx128m‘

JAVA_HOME=/usr/java/latest

CATALINA_HOME=/usr/local/tomcat

export JAVA_HOME CATALINA_HOME

case $1 in

start)

exec $CATALINA_HOME/bin/catalina.sh start ;;

stop)

exec $CATALINA_HOME/bin/catalina.sh stop;;

restart)

$CATALINA_HOME/bin/catalina.sh stop

sleep 2

exec $CATALINA_HOME/bin/catalina.sh start ;;

configtest)

exec $CATALINA_HOME/bin/catalina.sh configtest ;;

*)

exec $CATALINA_HOME/bin/catalina.sh * ;;

esac

6)修改文件权限

[[email protected] latest]# chmod +x /etc/init.d/tomcat

[[email protected] latest]# service tomcat start

7)为tomcat提供一个jsp页面:

[email protected] webapps]# mkdir testapp

[[email protected] webapps]# cd testapp/

[[email protected] testapp]# mkdir -pv WEB-INF/{classes,lib}

mkdir: created directory `WEB-INF‘

mkdir: created directory `WEB-INF/classes‘

mkdir: created directory `WEB-INF/lib‘

[[email protected] testapp]# vim index.jsp

<%@ page language="java" %>

<%@ page import="java.util.*" %>

<html>

<head>

<title>JSP test Page</title>

</head>

<body>

<%

out.println("Hello world!");

out.println("Hello MageEdu!");

%>

</body>

</html>

这样tomcat就可以工作了

二、以nginx反向代理tomcat

主机                 ip                            安装服务

主机1             172.16.24.11  192.168.24.1       nginx

主机2             192.168.24.11                    tomcat

主机3             192.168.24.12                    tomcat

1)主机1编辑配置nginx

[[email protected] ~]# vim /etc/nginx/nginx.conf

location / {

# root   html;

# index  index.html index.htm;

proxy_pass http://192.168.24.11:8080;

}

2)启动nginx

[[email protected] ~]# service nginx reload

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

Reloading nginx:                                           [  OK  ]

3)nginx实现动静分离

location / {

root   /web/htdocs;

index  index.html index.htm;

}

location ~* \.(jsp|do)$ {

proxy_pass http://192.168.24.11:8080;

}

location ~* \.(jpg|jpeg|png|pdf|doc|rar|) {

proxy_pass http://192.168.24.12:8080;

}

三、 配置apache通过mod_proxy模块与Tomcat连接

要使用mod_proxy与Tomcat实例连接,需要apache已经装载mod_proxy、mod_proxy_http、mod_proxy_ajp和proxy_balancer_module(实现Tomcat集群时用到)等模块:

# /usr/local/apache/bin/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)

2、在httpd.conf的全局配置段或虚拟主机中添加如下内容:

ProxyVia Off

ProxyRequests Off

ProxyPreserveHost Off

<Proxy *>

Require all granted

</Proxy>

ProxyPass  /  ajp://172.16.100.1:8009/

ProxyPassReverse  /  ajp://172.16.100.1:8009/

<Location  / >

Require all granted

</Location>

或让apache跟Tomcat的http连接器进行整合:

ProxyVia Off

ProxyRequests Off

ProxyPass / http://172.16.100.1:8080/

ProxyPassReverse / http://172.16.100.1:8080/

<Proxy *>

Require all granted

</Proxy>

<Location  / >

Require all granted

</Location>

关于如上apache指令的说明:

ProxyPreserveHost {On|Off}:如果启用此功能,代理会将用户请求报文中的Host:行发送给后端的服务器,而不再使用ProxyPass指定的服务器地址。如果想在反向代理中支持虚拟主机,则需要开启此项,否则就无需打开此功能。

ProxyVia  {On|Off|Full|Block}:用于控制在http首部是否使用Via:,主要用于在多级代理中控制代理请求的流向。默认为Off,即不启用此功能;On表示每个请求和响应报文均添加Via:;Full表示每个Via:行都会添加当前apache服务器的版本号信息;Block表示每个代理请求报文中的Via:都会被移除。

ProxyRequests {On|Off}:是否开启apache正向代理的功能;启用此项时为了代理http协议必须启用mod_proxy_http模块。同时,如果为apache设置了ProxyPass,则必须将ProxyRequests设置为Off。

ProxyPass  [path]  !|url  [key=value key=value ...]]:将后端服务器某URL与当前服务器的某虚拟路径关联起来作为提供服务的路径,path为当前服务器上的某虚拟路径,url为后端服务器上某URL路径。使用此指令时必须将ProxyRequests的值设置为Off。需要注意的是,如果path以“/”结尾,则对应的url也必须以“/”结尾,反之亦然。

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

1)apache基于http代理tomcat

[[email protected] ~]# cd /etc/httpd/

[[email protected] httpd]# ls

conf  conf.d  logs  modules  run

[[email protected] httpd]# cd conf.d

[[email protected] conf.d]# ls

mod_dnssd.conf  README  welcome.conf

[[email protected] conf.d]# vim tomcat.conf

ProxyVia on

ProxyRequests off

proxyPreserveHost on

ProxyPass / http://192.168.24.11:8080/

ProxyPassReverse / httpd://192.168.24.11:8080/

<Location />

Order Allow,Deny

Allow from all

</Location>

2)apache基于jsp代理tomcat

[[email protected] conf.d]# vim tomcat.conf

ProxyVia on

ProxyRequests off

proxyPreserveHost on

ProxyPass / ajp://192.168.24.11:8009/

ProxyPassReverse / ajp://192.168.24.11:8009/

<Location />

Order Allow,Deny

Allow from all

</Location>

tomcat配置及基于nginx、apache反向代理tomcat

时间: 2024-08-08 22:05:38

tomcat配置及基于nginx、apache反向代理tomcat的相关文章

Apache反向代理Tomcat(mod_proxy方式)

Apache反向代理Tomcat(mod_proxy方式) 环境使用两台服务器,apache服务器IP为192.168.8.18,tomcat服务器地址为192.168.8.16 Tomcat搭建(192.168.8.16): 安装JDK: 官方网站下载二进制包 # chmod +x jdk-6u45-linux-i586-rpm.bin# 赋予执行权限 # ./jdk-6u45-linux-i586-rpm.bin# 执行 默认安装在/usr/java目录下 # vim /etc/profil

NGINX如何反向代理Tomcat并且实现Session保持

简介 LNMT=Linux+Nginx+MySQL+Tomcat: Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器: 在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选: 架构需求 Tomcat实现JSP动态请求解析的基本架构 说明:由后端Tomcat负责解析动态jsp请求,但为了提高响应性能,在同一主机内配置Nginx做反向代理,转发所有请求至tomcat即可: 完整的LNMT架构设计 说明:本篇博客主要讲解单台Hapro

linux 下apache反向代理 tomcat

一.实验说明 Apache HTTP server 和 Tomcat server 整合,一般是希望对于用户只公布 Apache HTTP server 的网址,而 Tomcat 的网址则不公布,扮演一个幕后英雄的角色.访问 Tomcat 的 HTTP 请求,通过 Apache 转发给 Tomcat,Tomcat 处理完后,将 HTTP 回应返回给 Apache,然后 Apache  HTTP 回应发回给用户端浏览器. Apache HTTP server和 Tomcat server 直接的

apache反向代理tomcat

利用apache以反向代理方式把动态请求转发至后端tomcat集群,相关模块:mod_jk mod_proxy 和nginx代理比较,tomcat与apache因为技术相通联系更紧密,相应转发和管理做得更好: nginx转发时,以http转发,apache mod_proxy可以用ajp(apache jserv protocol)协议转发,ajp为二进制,效率更高:

Nginx/Apache反向代理

初衷:一台服务器上只有一个80端口,如果要部署多套网站,难免会有www.veblen.com:80808080或者www.veblen.com/test/child/pro.html这样的尴尬情况,反人类的操作. Nginx 下载Nginx 双击应用程序即可启动 n3.png 在浏览器窗口输入localhost出现如图所示页面,即为代理成功 n2.png 打开config文件夹下 nginx.conf文件 n1.png 在http下添加 server { listen 80; server_na

nginx https反向代理tomcat

Context体现在server.xml中的Host里的<Context>元素,它由Context接口定义.每个<Context>元素代表了运行在虚拟主机上的单个Web应用. <Context>元素: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- Sing

使用nginx反向代理tomcat集群

一.反向代理的概念 正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器).为了从原始服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转交并且将获得的内容返回给客户端.正向代理的情况下客户端必须要进行一些特别的设置才能使用. 反向代理正好相反.对于客户端来说,反向代理就好像目标服务器.并且客户端不需要进行任何设置.客户端向反向代理发送请求,接着反向代理判断请求走向何处,并将请求转交给客户端,使得这些内容就好似他自己一样,一次客户端并不会感知到反

使用apache反向代理tomacat

起源 在大部分的生产环境中,基本上使用的都是java程序,从而促进了各种应用程序中间件的产生,在这里大概有几种,tomcat作为最著名的开源servlet容器,jboss也是开源的,而且有管理界面,主要是redhat的,而weblogic则是oracle的商业中间件,而webspare则是IBM的商业中间件,其他的几个例如jetty,resin用的也就比较少了. 在安装tomcat的时候,每次首先需要安装的是jdk,提供jvm虚拟机,jre运行环境,从而每次安装jdk的时候,有几种选择,生产环境

nginx或httpd实现反向代理tomcat并实现会话保持(二)

实例一:手动添加一个应用程序: 创建一个webapp的目录 [[email protected] myweb]# mkdir webapp [[email protected] webapp]# mkdir logs [[email protected] myweb]# cd webapp/ [[email protected] webapp]# mkdir./{classes,lib,META-INF,WEB-INF,Root} 在Root目录下创建自定义的index.jsp文件 [[emai