1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
server:
# 端口
port: 8080
# 服务器应该绑定的网络地址,该服务绑定IP地址,启动服务器时如本机不是该IP地址则抛出异常启动失败,只有特殊需求的情况下才配置
address: null
# 用于服务器响应头的值(如果为空,则不发送表头)
server-header: null
# HTTP 消息头的最大大小
maxHttpHeaderSize: 0
# 服务器将支持的关闭类型
shutdown: GRACEFUL
# ssl
ssl:
enabled: false
# 客户端身份验证类型
client-auth: none
# 支持的 SSL 密码
ciphers: null,2
# 启用的 SSL 协议。
enabled-protocols: 1,2
# 标识密钥库中密钥的别名
key-alias: a
# 用于访问密钥库中密钥的密码
key-password: 123456
# 保存 SSL 证书的密钥库的路径(通常是 jks 文件)
key-store: s
# 用于访问密钥库的密码
key-store-password: 123456
# 密钥库的类型
key-store-type: 1
# 密钥库的提供者
key-store-provider: 1
# 保存 SSL 证书的信任库
trust-store: 1
# 用于访问信任库的密码
trust-store-password: 123456
# 信任库的类型
trust-store-type: 1
# 信任库的提供者
trust-store-provider: 2
# 以 PEM 格式返回信任证书颁发机构链的位置
trust-certificate: 1
# 以 PEM 格式返回信任证书的私钥的位置
trust-certificate-private-key: 1
# 以 PEM 格式返回证书的位置
certificate: 111
# 以 PEM 格式返回证书的私钥的位置
certificate-private-key: 1
# 要使用的 SSL 协议
protocol: TLS
# 用于压缩配置
compression:
enabled: false
mimeTypes: "text/html", "text/xml", "text/plain", "text/css", "text/javascript",
"application/javascript", "application/json", "application/xml"
excludedUserAgents: null
minResponseSize: 2KB
# 用于 HTTP/2 配置
http2:
enabled: false
servlet:
# servlet 上下文初始化参数
context-parameters:
key: value
# 用程序的上下文路径
contextPath: /
# 应用程序的显示名称
applicationDisplayName: application
# 是否向容器注册默认 Servlet
registerDefaultServlet: false
encoding:
charset: UTF-8
# 是否强制编码为 HTTP 请求和响应上配置的字符集
force: false
# 是否强制编码为 HTTP 请求上配置的字符集。未指定“强制”时默认为 true
forceRequest: true
# 是否强制编码为 HTTP 响应上配置的字符集
forceResponse: true
# 对映射进行编码的语言环境
mapping:
key: value
session:
timeout: 30m
# 返回是否在重新启动之间保留会话数据。true在重新启动之间保留会话数据
persistent: false
# 可用的会话跟踪模式
trackingModes:
# 发送 cookie 以响应客户端的第一个请求
- COOKIE
# 重写 URL 以附加会话 ID
- URL
# 使用 SSL 内置机制来跟踪会话
- SSL
cookie:
# 评论会话 cookie
comment: null
# cookie 的名称
name: null
# cookie 的域
domain: null
# cookie 的路径
path: null
# 是否对 cookie 使用“HttpOnly”cookie
httpOnly: true
# 是否始终将 cookie 标记为安全
secure: false
# cookie 的最大年龄。如果未指定持续时间后缀,则将使用秒。正值表示 cookie 相对于当前时间的过期时间。值 0 表示 cookie 应立即过期。负值表示没有“Max-Age”
maxAge: 3600s
# cookie 的 SameSite 设置
sameSite: NONE
# 反应性服务器属性
reactive:
session:
timeout: 30m
# Tomcat 配置
tomcat:
# Tomcat 访问日志属性
access-log:
# 启用访问日志
enabled: true
# 是否仅在“ServletRequest.getAttribute(conditionIf)”不产生 null 时才启用请求的日志记录
condition-if: null
# 是否仅在“ServletRequest.getAttribute(conditionUnless)”产生 null 时才启用请求记录
condition-unless: null
# 访问日志的格式模式
pattern: common
# 创建日志文件的目录。可以是绝对的或相对于 Tomcat 基本目录。
directory: logs
# 日志文件名前缀
prefix: access_log
# 日志文件名后缀
suffix: .log
# 编码
encoding: utf-8
# 用于格式化日志条目和日志文件名后缀中的时间戳的语言环境。默认为 Java 进程的默认语言环境
locale: null
# 是否检查日志文件是否存在,以便在外部进程重命名它时可以重新创建它
check-exists: false
# 是否启用访问日志轮换
rotate: true
# 是否推迟在文件名中包含日期戳,直到轮换时间
rename-on-rotate: false
# 删除访问日志文件之前保留的天数
max-days: -1
# 放置在日志文件名中的日期格式
file-date-format: .yyyy-MM-dd
# 是否使用 RFC 5952 定义的 IPv6 规范表示格式
ipv6-canonical: false
# 为请求使用的 IP 地址、主机名、协议和端口设置请求属性
request-attributes-enabled: false
# 是否缓冲输出,使其仅定期刷新
buffered: true
# 线程相关配置
threads:
# 工作线程的最大数量
max: 200
# 工作线程的最小数量
min-spare: 10
# Tomcat 基目录。如果未指定,则使用临时目录
basedir: null
# 调用 backgroundProcess 方法之间的延迟。如果未指定持续时间后缀,则将使用秒
background-processor-delay: 10s
# 任何 HTTP 发布请求中表单内容的最大大小
max-http-form-post-size: 2MB
# 要吞下的请求正文的最大数量
max-swallow-size: 2MB
# 是否应通过将 / 附加到路径来重定向对上下文根的请求。使用在代理处终止的 SSL 时,此属性应设置为 false。
redirect-context-root: true
# 通过调用 sendRedirect 生成的 HTTP 1.1 和更高版本的位置标头将使用相对重定向还是绝对重定向。
use-relative-redirects: false
# 用于解码 URI 的字符编码
uri-encoding: UTF-8
# 服务器在任何给定时间接受和处理的最大连接数。一旦达到限制,操作系统仍然可以根据“acceptCount”属性接受连接
max-connections: 8192
# 当所有可能的请求处理线程都在使用时,传入连接请求的最大队列长度
accept-count: 100
# 将保留在缓存中并在后续请求中重用的最大空闲处理器数。当设置为 -1 时,缓存将不受限制,理论上的最大大小等于最大连接数
processor-cache: 200
# 在连接关闭之前等待另一个 HTTP 请求的时间。如果未设置,则使用 connectionTimeout。设置为 -1 时不会超时
keep-alive-timeout: 1024s
# 在连接关闭之前可以通过管道传输的最大 HTTP 请求数。当设置为 0 或 1 时,keep-alive 和流水线被禁用。当设置为 -1 时,允许无限数量的流水线或保持活动请求
max-keep-alive-requests: 100
# 逗号分隔的附加模式列表,匹配 jar 以忽略 TLD 扫描。特殊的“?”和 '*' 字符可以在模式中使用,以分别匹配一个和一个字符以及零个或多个字符。
additional-tld-skip-patterns:
- aa
- bb
# URI 路径中应允许的其他未编码字符的逗号分隔列表。只允许使用“< > [ \ ] ^ ` { | }”
relaxed-path-chars:
- <
- >
# URI 查询字符串中应允许的其他未编码字符的逗号分隔列表。只允许使用“< > [ \ ] ^ ` { | }”
relaxed-query-chars:
- <
- >
# 连接器在接受连接后将等待呈现请求 URI 行的时间
connection-timeout: 1024s
# 是否拒绝带有非法标头名称或值的请求
reject-illegal-header: true
# 静态资源配置
resource:
# 此 Web 应用程序是否允许静态资源缓存
allow-caching: true
# 静态资源缓存的生存时间
cache-ttl: 10m
# Modeler MBean 注册表配置
reregistration:
# 是否应该启用 Tomcat 的 MBean Registry
enabled: false
# 远程 IP 阀配置
remoteip:
# 匹配要信任的代理的正则表达式
internal-proxies: 10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|" // 10/8
+ "192\\.168\\.\\d{1,3}\\.\\d{1,3}|" // 192.168/16
+ "169\\.254\\.\\d{1,3}\\.\\d{1,3}|" // 169.254/16
+ "127\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}|" // 127/8
+ "172\\.1[6-9]{1}\\.\\d{1,3}\\.\\d{1,3}|" // 172.16/12
+ "172\\.2[0-9]{1}\\.\\d{1,3}\\.\\d{1,3}|172\\.3[0-1]{1}\\.\\d{1,3}\\.\\d{1,3}|" //
+ "0:0:0:0:0:0:0:1|::1
# 包含传入协议的标头,通常命名为“X-Forwarded-Proto”
protocolHeader: X-Forwarded-Proto
# 指示传入请求是否使用 SSL 的协议标头的值
protocol-header-https-value: https
# 从中提取远程主机的 HTTP 标头的名称
host-header: X-Forwarded-Host
# 用于覆盖原始端口值的 HTTP 标头的名称
port-header: X-Forwarded-Port
# 从中提取远程 IP 的 HTTP 标头的名称。例如,“X-FORWARDED-FOR”
remote-ip-header: X-FORWARDED-FOR

9.0 地址 https://tomcat.apache.org/tomcat-9.0-doc/config/valve.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
该属性的值pattern由文字文本字符串组成,并结合以“%”字符为前缀的模式标识符,以导致被当前请求和响应中的相应变量值替换。支持以下模式代码:

%a- 远程 IP 地址。另见%{xxx}a下文。
%A- 本地 IP 地址
%b- 发送的字节数,不包括 HTTP 标头,如果为零,则为“-”
%B- 发送的字节数,不包括 HTTP 标头
%henableLookups- 远程主机名(如果连接器为假,则为IP 地址 )
%H- 请求协议
%l- 来自 identd 的远程逻辑用户名(总是返回“-”)
%m- 请求方法(GET、POST 等)
%p- 接收此请求的本地端口。另见%{xxx}p下文。
%q- 查询字符串(如果存在,则以“?”开头)
%r- 请求的第一行(方法和请求 URI)
%s- 响应的 HTTP 状态码
%S- 用户会话 ID
%t- 日期和时间,以通用日志格式
%u- 已通过身份验证的远程用户(如果有),否则为“-”(如果需要,转义)
%U- 请求的 URL 路径
%v- 本地服务器名称
%D- 处理请求所花费的时间,以毫秒为单位。注意:在 httpd 中,%D 是微秒。行为将与 Tomcat 10 及更高版本中的 httpd 保持一致。
%T- 处理请求所花费的时间,以秒为单位。注意:此值具有毫秒分辨率,而在 httpd 中它具有秒分辨率。行为将与 Tomcat 10 及更高版本中的 httpd 保持一致。
%F- 提交响应所需的时间,以毫秒为单位
%I- 当前请求线程名称(可以稍后与堆栈跟踪进行比较)
%X- 响应完成时的连接状态:
X= 在响应完成之前连接中止。
+= 发送响应后,连接可能会保持活动状态。
-= 发送响应后将关闭连接。
还支持写入信息传入或传出标头、cookie、会话或请求属性和特殊时间戳格式。它以 Apache HTTP Server日志配置语法为模型。xxx它们中的每一个都可以使用不同的键 多次使用:

%{xxx}a写入远程地址(客户端)(xxx==remote)或连接对端地址(xxx=peer)
%{xxx}i使用名称写入传入标头的值xxx(如果需要,请转义)
%{xxx}o用名称写入传出标头的值xxx(如果需要,转义)
%{xxx}c用名称写入 cookie 的值xxx(如果需要,转义)
%{xxx}r用名称写入 ServletRequest 属性的值xxx(如果需要,转义)
%{xxx}s使用名称写入 HttpSession 属性的值xxx(如果需要,请转义)
%{xxx}p写入本地(服务器)端口(xxx==local)或远程(客户端)端口(xxx=remote)
%{xxx}t在使用增强的 SimpleDateFormat 模式格式化的请求末尾写入时间戳xxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#内嵌服务器端口
server:
port: 8060
servlet:
contextPath:
session:
timeout: 28800s
# Tomcat 配置
tomcat:
# Tomcat 访问日志属性
access-log:
# 启用访问日志
enabled: true
# 访问日志的格式模式
pattern: '"%{X-Forwarded-For}i" %a "%{remote_port}i" [%t] %h "%r" %S "%{Cookie}i" %s "%{Referer}i" "%{User-Agent}i" %b %B %D %s'
# 创建日志文件的目录。可以是绝对的或相对于 Tomcat 基本目录。
directory: tomcat-logs
# 编码
encoding: utf-8
# 是否检查日志文件是否存在,以便在外部进程重命名它时可以重新创建它
check-exists: false
# 是否启用访问日志轮换
rotate: true
# 是否缓冲输出,使其仅定期刷新
buffered: true
# 线程相关配置
threads:
# 工作线程的最大数量
max: 500
# 工作线程的最小数量
min-spare: 10
# Tomcat 基目录。如果未指定,则使用临时目录
basedir: /data/wwwroot/password-evaluation