|
1.重定向web应用
tomcat提供统一的配置文件%CATALINA%\conf\server.xml。在该文件配置信息会在整个tomcat部属的所有应用上生效,但同时它也带来一个问题,就是如果有进行tomcat版本的更新可能导致相应的server.xml配置信息被覆盖。如何做到当前tomcat配置对所有部属在此之上的应用配置相同,但又不会因为更新tomcat等原因导致配置信息被覆盖呢?答案就是CATALINA_BASE环境变量。Tomcat在部属应用时会按照%CATALINA_BASE%\conf下的配置文件启动%CATALINA_HOME%下的tomcat应用。例如:
mkdir tomcatAppOne
cp -a $CATALINA_HOME\conf .
创建tomcatAppOne目录,将tomcat安装目录下conf文件夹全部复制到tomcatAppOne下。
随后,配置tomcatAppOne/conf/server.xml文件。例如将访问端口设置到8081
随后,启设置CATALINA_BASE环境变量并启动tomcat
set CATALINA_BASE=d:/tomcatAppOne
catalina start
在相应的启动输出信息内可以看到,当前tomcat已经使用tomcatAppOne下的server.xml配置的8081端口监听Http请求了。
2.变更Http监听端口8080为80
- tomcat默认监听HTTP请求的端口是8080,这主要 由于默认HTTP 80端口又可能被其他应用使用才故意为之。若想将其修改为默认端口,可以通过conf/server.xml文件来进行
设置完毕后启动应用,tomcat这会监听80端口的HTTP请求。
- 不过设置80端口有一个缺点,就是想要开启80端口,用户必须具有root权限(端口号小于1024的,开启都需要具有root权限)。如果用户没有root权限,则可以通过设置iptables来进行,具体命令如下
iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -I OUTPUT -p tcp --dport 80 -j REDIRECT --to-ports 8080
这两句命令的主要作用就是将所有http 80端口连接都重定向到8080端口,此外,还需要设置server.xml
启动tomcat,此时所有80端口的http连接都将有8080端口来处理了。
3.变更tomcat内置的jsp编译器
tomcat 5.5及以上版本默认的使用内置的Eclipse JDT编译器来编译jsp.Eclipse JDT的作用与JDK提供的javac功能上是一致的。但这两者之间还是存在一个区别:Eclipse JDT由于发布时间的关系,可能对java最新的一些特性并不完全支持。因此,某些情况下希望将tomcat内置的JDT编译器替换成jdk的javac。在tomcat 5.5及以上版本提供两种编译器选择:
- 内置默认的eclipse JDT编译器
- 使用Apache Ant来编译jsp,由于Ant默认采用JDK's JAVAC编译器,因此采用ANT编译jsp就等同于采用JAVAC
如果希望采用ANT来替换JDT,具体的步骤如下:
- 删除CATALINA_HOME\common\lib\jasper-compiler-jdt.jar文件
- 将Ant下的ant.jar复制到common\lib下
- 将jdk下的tool.jar复制到common\lib下
操作完上述步骤后,启动tomcat,这当前将不在使用JDT而是ANT来编译jsp了。
4.安全性(Security)
tomcat通过server.xml下的Realm与web.xml的来限制用于对tomcat内资源的访问。
简单地讲,Realm就是用户,密码及角色所组成的配置信息。Tomcat提供四种不同Realm:
1.UserDatabaseRealm
UserDatabaseRealm通过加载配置在静态文件的信息来控制资源访问,该方式只会在tomcata启动时刻加载,因此无法在tomcat运行期间动态修改。tomcat提供conf/tomcat-users.xml来配置用户,密码,角色之间的关系
通过在server.xml配置对应的UserDatabaseRealm来载入上述文件
由于UserDatabaseRealm无法在运行时修改及明文存放密码等缘故,现实中使用该方式的应用较少。
2.JDBCRealm
JDBCRealm主要通过数据库来存储用户,密码和角色关系,相对UserDatabaseRealm,好处在于可以运行时修改。
通过制定用户,密码和角色相关表单,来设置访问控制。JDBCRealm虽然可以动态修改,但是由于数据库连接信息仍然是以明文形式存储,因此安全性方面还是不足
3.JNDIRealm
通过LDAP方式来设置控制信息.
4.JAASRealm
通过使用Java Authentication and Authorization Service来配置控制信息。
配置完毕Realm后,还需要在web.xml配置相应的才能起到控制作用。例如:
AAA
/member/*
member
BASIC
mmm
Tomcat提供四种级别的安全性认证方式:
1.Basic authentication
认证的用户名及密码通过明文传输。设置方式
BASIC
mmm
2.Digest authentication
认证信息采用信息摘要方式传输,可使用MD5,SHA等摘要算法。设置如下
DIGEST
mmm
server.xml中定义的Realm设置摘要算法
3.Form Authentication
通过表单提交认证信息
FORM
mmm
/login.html
/error.html
4.Client-cert Authentication
使用client-cert认证,当前连接必须采用HTTPS.
如果希望在访问资源尽可能的减少相同角色的密码输入,则可以通过在server.xml配置Single Sign-On来实现
5.Session管理
tomcat提供2种session持久化设置:
- StandardManager:默认,只有当tomcat正常推出时才会执行保存session到catalina_home/work/catalina/hostname/webapp-name/的session.ser文件内
- PersistenManager: 能实时保存session到指定的文件或者JDBC数据库中。
此外,tomcat还提供通过web.xml配置session的过期时间(单位:分)
30
|
|
|