核心在于通过在 web.xml 下的 <error_page> 页签来重定向 错误页面
配置类似于
<error-page> <error-code>400</error-code> <location>/error.html</location> </error-page> <error-page> <error-code>404</error-code> <location>/error.html</location> </error-page> <error-page> <error-code>500</error-code> <location>/error.html</location> </error-page>
注:location为放入的错误页url路径
简而言之,
把ROOT文件夹清空,
管理界面就不会出现了
配置完环境变量记得 source /etc/profile,让其立即在当前会话中生效
tomcat是java语言开发的
所以tomcat运行需要java环境的支持
JDK8后不会出现PerGen space内存溢出
-server Java虚拟机的运行模式 多cpu是性能更好的发挥
java heap 初始化大小 默认为物理内存的64分之一,最大不能超过物理内存的80%
java heap 最大值.建议设置为物理内存一半
Metaspacesize 初始元数据空间
MaxMetaspaceSize 最大元数据空间,默认无上限,
堆(heap) 设置越大gc回收时间越慢反之回头快但是垃圾回收频率高
XMS 初始内存
XMX 最大内存
1、 Server服务器管理各个Service服务,监听8005端口,shutdown
2、 各个Service之间是独立的,但是共享同一套虚拟机资源
3、Connector 跟外部的连接器,监听固定端口,接收外部请求,将请求传递给Container,并将Container处理结果返回给外部
4、Container是Servlet容器,管理Servlet生命周期,调用Servlet方法处理业务逻辑
OutOfMemoryError: Java heap space: 堆内存溢出
OutOfMemoryError: PermGen space: 静态内存溢出
StackOverflowError: 栈内存溢出
堆内存:new 出来的对象
栈内存: 局部变量
静态内存区; class
setTimeBetweenEvictionRunsMillis 空闲连接回收器线程回收期休眠时间(设置为负数则不执行,若要执行传入的值不应小于10000)
数据库连接池则是在数据初始化时,集中创建多个数据库连接 ,并集中管理供程序使用{保证了较快的数据库的读写速度,并且更加安全
准备一个空间 专门用来保存所有数据库连接 用户对数据库进行操作可直接从这个空间里取走连接,关闭的时候则把连接放回到空间中 ——> 这个空间就可以称之为连接池 20/6/30 /23:01
linux下的jdk和tomcat的安装与配置
优化配置
缓存优化(nginx、gzip)
运动模式
BIO:效率低下,一个线程只能处理一个请求,请求过多的时候,线程会相应的增加,很浪费资源,tomcat7以下版本是BIO
NIO:基于缓存区、非阻塞的I/O。相对于BIO效率更高(利用java异步I/O,少量线程处理大量请求)
APR:tomcat7及以上默认模式。需要操作系统的支持(tomcat7以及以上版本在操作系统安装了APR时候,tomcat默认是APR模式)
安全规范
1、账号管理、认证授权
(1)共享,无关账号
在conf/tomcat-uesrs.xml中配置账号密码以及权限
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="tomcat" password="admin123456" roles="admin-gui, manager-gui"/>
(2)口令密码:定期修改
(3)用户权限
2、日志配置操作
conf/server.xml文件中打开注释即可
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
含义解释:
className:log日志包
directory:日志文件存放的目录
prefix:日志文件名称前缀
suffix:日志文件后缀名
pattern:日志格式
3、设备其他配置操作
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
Cookies
1、保存咋客户端的纯文本文件
2、cookie实现离线购物车(场景应用)
3、XSS-跨站脚本攻击
在tomcat context.xml配置文件中的context节点设置useHttpOnly=true即可开启cookie加密,提高安全性,使cookie不那么容易被窃取,预防xss攻击
tomcat安全配置:
1、初始化配置:
(1)关闭服务器端口;如果不改关闭端口或关闭命令,别人会通过端口号和命令关闭服务,出于安全考虑,需要改变端口号或关闭命令。
cmd命令窗口:telnet 127.0.0.1 8005 回车,然后输入SHUTDOWN命令关闭服务
为了安全起见,可以修改关闭的端口号以及关闭命令,如下:
<Server port="8555" shutdown="GOTODIE">
(2)隐藏版本信息;防止黑客针对某一版本进行攻击,需要将版本信息隐藏起来。
版本信息在tocat的lib目录下的catalina.jar里的org.apache.catalina.util里的ServerInfo.properties文件里。
catalina.jar\org\apache\catalina\util\ServerInfo.properties
server.info=Apache Tomcat/8.5.31改为NO VERSION
(3)禁用Tomcat管理页面;防止黑客通过tomcat管理界面对tomcat进行攻击。
方法:将Root文件重命名,重新建一个空的Root文件。
(4)自定义错误页面;在webapps/ROOT目录下,新建一个error.html错误页面,然后配置一下conf/web.xml
(5)AJP端口管理: AJP就是为tomcat与http服务器之间通信而定制的一个协议,能够提供比较高的通信速度和效率。如果前端用的是apach服务器,就会使用到这个AJP连接器。但是如果前端用的是nginx做的反向代理,就可以不使用这个连接器,就需要注释掉这个连接器,步骤如下:
conf/server.xml文件如下:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />注释掉即可。
(6)启用cookie的HttpOnly;
tomcat安全配置:
1、初始化配置:
(1)关闭服务器端口;如果不改关闭端口或关闭命令,别人会通过端口号和命令关闭服务,出于安全考虑,需要改变端口号或关闭命令。
cmd命令窗口:telnet 127.0.0.1 8005 回车,然后输入SHUTDOWN命令关闭服务
为了安全起见,可以修改关闭的端口号以及关闭命令,如下:
<Server port="8555" shutdown="GOTODIE">
(2)隐藏版本信息;防止黑客针对某一版本进行攻击,需要将版本信息隐藏起来。
版本信息在tocat的lib目录下的catalina.jar里的org.apache.catalina.util里的ServerInfo.properties文件里。
catalina.jar\org\apache\catalina\util\ServerInfo.properties
server.info=Apache Tomcat/8.5.31改为NO VERSION
(3)禁用Tomcat管理页面;
防止黑客通过tomcat管理界面对tomcat进行攻击。
方法:将Root文件重命名,重新建一个空的Root文件。
(4)自定义错误页面;在webapps/ROOT目录下,新建一个error.html错误页面,然后配置一下conf/web.xml
(5)AJP端口管理;
(6)启用cookie的HttpOnly;
tomcat安全配置:
1、初始化配置:
(1)关闭服务器端口;如果不改关闭端口或关闭命令,别人会通过端口号和命令关闭服务,出于安全考虑,需要改变端口号或关闭命令。
cmd命令窗口:telnet 127.0.0.1 8005 回车,然后输入SHUTDOWN命令关闭服务
为了安全起见,可以修改关闭的端口号以及关闭命令,如下:
<Server port="8555" shutdown="GOTODIE">
(2)隐藏版本信息;防止黑客针对某一版本进行攻击,需要将版本信息隐藏起来。
版本信息在tocat的lib目录下的catalina.jar里的org.apache.catalina.util里的ServerInfo.properties文件里。
catalina.jar\org\apache\catalina\util\ServerInfo.properties
server.info=Apache Tomcat/8.5.31改为NO VERSION
(3)禁用Tomcat管理页面;
防止黑客通过tomcat管理界面对tomcat进行攻击。
方法:将Root文件重命名,重新建一个空的Root文件。
(4)自定义错误页面;
(5)AJP端口管理;
(6)启用cookie的HttpOnly;
tomcat安全配置:
1、初始化配置:
(1)关闭服务器端口;如果不改关闭端口或关闭命令,别人会通过端口号和命令关闭服务,出于安全考虑,需要改变端口号或关闭命令。
cmd命令窗口:telnet 127.0.0.1 8005 回车,然后输入SHUTDOWN命令关闭服务
为了安全起见,可以修改关闭的端口号以及关闭命令,如下:
<Server port="8555" shutdown="GOTODIE">
(2)隐藏版本信息;
防止黑客针对某一版本进行攻击,需要将版本信息隐藏起来。
版本信息在tocat的lib目录下的catalina.jar里的org.apache.catalina.util里的ServerInfo.properties文件里。
catalina.jar\org\apache\catalina\util\ServerInfo.properties
server.info=Apache Tomcat/8.5.31改为NO VERSION
(3)禁用Tomcat管理页面;
(4)自定义错误页面;
(5)AJP端口管理;
(6)启用cookie的HttpOnly;
tomcat安全配置:
1、初始化配置:
(1)关闭服务器端口;如果不改关闭端口或关闭命令,别人会通过端口号和命令关闭服务,出于安全考虑,需要改变端口号或关闭命令。
cmd命令窗口:telnet 127.0.0.1 8005 回车,然后输入SHUTDOWN命令关闭服务
为了安全起见,可以修改关闭的端口号以及关闭命令,如下:
<Server port="8555" shutdown="GOTODIE">
(2)隐藏版本信息;
(3)禁用Tomcat管理页面;
(4)自定义错误页面;
(5)AJP端口管理;
(6)启用cookie的HttpOnly;
多域名访问:提高资源利用率
如何配置:基于ip地址或者基于端口的虚拟主机
基于ip地址配置虚拟主机:
<Host name="主机名" appBase="项目地址" unpackWARs="true" autoDeploy="true">
<Context path="" docBase="." debug="0" />
</Host>
同时配置操作系统host文件: 127.0.0.1 主机名
基于端口配置虚拟主机:
tomcat的server.xml文件也可以配置多个虚拟主机,
相同域名不同端口可以通过增加service节点实现,
不同的域名则可以同过增加host节点实现
单点登录方式:
(1)以Cookie作为凭证媒介;
(2)通过jsop实现;
(3)通过页面重定向的方式实现;
(4)使用第三方插件实现,如CAS
CAS:开源的企业级单点登录解决方案。
开源的企业级单点登录解决方案
从结构上:CAS Server和CAS Client
CAS Server:需要独立部署,负责对用户的认证工作。
CAS Client:负责对客户端的受保护的资源的访问请求