附录 A. 参考资料

A.1. 提供的 Undertow 处理程序

注意

若要获得处理程序的完整列表,您必须在与 JBoss EAP 安装中的 Undertow 核心匹配的版本中检查 Undertow 核心的源 JAR 文件。您可以从 JBoss EAP Maven 存储库 下载 Undertow 核心源 JAR 文件,然后引用 /io/undertow/server/handlers/ 目录中可用的处理程序。

您可以通过搜索 server.log 文件中在 JBoss EAP 服务器启动期间打印的 INFO 消息来验证 JBoss EAP 的当前安装中使用的 Undertow 核心版本,类似于以下示例中所示的信息:

INFO [org.wildfly.extension.undertow] (MSC service thread 1-1) WFLYUT0003: Undertow 1.4.18.Final-redhat-1 starting
AccessControlListHandler

类 Name: io.undertow.server.handlers.AccessControlListHandler

名称: access-control

可以根据远程对等点的属性来接受或拒绝请求的处理程序。

表 A.1. 参数

名称描述

acl

ACL 规则.这个参数是必需的。

attribute

交换属性字符串.这个参数是必需的。

default-allow

指定处理程序是否默认接受或拒绝请求的布尔值.默认值为 false

AccessLogHandler

类 Name: io.undertow.server.handlers.accesslog.AccessLogHandler

名称: access-log

访问日志处理程序.此处理程序根据提供的格式字符串生成访问日志消息,并将这些消息传递到提供的 AccessLogReceiver 中。

此处理程序可以记录通过 ExchangeAttribute 机制提供的任何属性。

此工厂为以下模式生成令牌处理程序:

表 A.2. pattern

pattern描述

%a

远程 IP 地址

%A

本地 IP 地址

%b

发送字节,除 HTTP 标头或 - 如果没有发送字节

%B

发送的字节数,HTTP 标头除外

%h

远程主机名

%H

请求协议

%l

远程逻辑用户名 from identd (始终返回 -

%m

请求方法

%p

本地端口

%q

查询字符串(除 ? 字符外)

%r

请求的第一行

%s

响应的 HTTP 状态代码

%t

日期和时间,采用通用日志格式格式

%u

经过身份验证的远程用户

%U

请求的 URL 路径

%v

本地服务器名称

%D

处理请求所需的时间,以毫秒为单位

%T

处理请求的时间(以秒为单位)

%I

当前 Request 线程名称(稍后与堆栈追踪进行比较)

common

%h %l %u %t "%r" %s %b

combined

%h %l %u %t "%r" %s %b "%{i,Referer}" "%{i,User-Agent}"

也支持从 Cookie、传入标头或会话中写入信息。

它使用 Apache 语法建模:

  • 用于传入标头的 %{I,xx}
  • 用于传出响应标头的 %{O,xxx}
  • 特定 Cookie %{C,xxx}
  • %{R,xxx} where xxxServletRequest中的属性
  • %{s,xxx} where xxxHttpSession中的属性

表 A.3. 参数

名称描述

格式

用于生成日志消息的格式。这是默认参数

AllowedMethodsHandler

将某些 HTTP 方法列入白名单的处理程序。只有允许的方法集中具有方法的请求才可以继续。

类 Name: io.undertow.server.handlers.AllowedMethodsHandler

name: allowed-methods

表 A.4. 参数

名称描述

方法

允许的方法,如 GETPOSTPUT 等。这是默认参数

BlockingHandler

启动阻止请求的 HttpHandler。如果线程当前在分配的 I/O 线程中运行。

类 Name: io.undertow.server.handlers.BlockingHandler

name:block ing

此处理程序没有参数。

ByteRangeHandler

范围请求的处理程序.这是一个通用处理程序,可以处理对固定内容长度的任何资源的范围请求,例如设置了 content-length 标头的任何资源。这不一定是处理范围请求的最有效方式,因为会生成完整的内容然后丢弃。目前,此处理程序只能处理简单、单一范围的请求。如果请求多个范围,则忽略 Range 标头。

类 Name: io.undertow.server.handlers.ByteRangeHandler

名称: 字节-range

表 A.5. 参数

名称描述

send-accept-ranges

是否发送接受范围的布尔值.这是默认参数

CanonicalPathHandler

此处理程序将相对路径转换为规范路径。

类名称: io.undertow.server.handlers.CanonicalPathHandler

名称: canonical-path

此处理程序没有参数。

DisableCacheHandler

通过浏览器和代理禁用响应缓存的处理程序。

类 Name: io.undertow.server.handlers.DisableCacheHandler

name: disable-cache

此处理程序没有参数。

DisallowedMethodsHandler

将某些 HTTP 方法列入黑名单的处理程序。

class Name: io.undertow.server.handlers.DisallowedMethodsHandler

name: disallowed-methods

表 A.6. 参数

名称描述

方法

禁止的方法,如 GETPOSTPUT 等。这是默认参数

EncodingHandler

此处理程序作为内容编码实施的基础。编码处理程序作为委托添加到此处理程序,具有指定的服务器端优先级。

q 值将用于确定正确的处理程序。如果请求没有 q 值,服务器会选择优先级最高的处理程序作为要使用的编码。

如果没有处理程序匹配,则假设身份编码。如果因为 q 值为 0 而明确禁止身份编码,处理程序会设置响应代码 406(Not Acceptable) 并返回。

类 Name: io.undertow.server.handlers.encoding.EncodingHandler

名称: 压缩

此处理程序没有参数。

FileErrorPageHandler

从磁盘提供 文件的处理程序,以充当错误页面。默认情况下,此处理程序不提供任何响应代码,您必须配置它响应的代码。

类 Name: io.undertow.server.handlers.error.FileErrorPageHandler

name: error-file

表 A.7. 参数

名称描述

file

文件的位置,以用作错误页面.

response-codes

导致重定向到定义错误页面文件的响应代码列表。

HttpTraceHandler

处理 HTTP 追踪请求的处理程序。

类 Name: io.undertow.server.handlers.HttpTraceHandler

name: trace

此处理程序没有参数。

IPAddressAccessControlHandler

可以根据远程对等点的 IP 地址接受或拒绝请求的处理程序。

类 Name: io.undertow.server.handlers.IPAddressAccessControlHandler

名称: ip-access-control

表 A.8. 参数

名称描述

acl

代表访问控制列表的字符串。这是默认参数

failure-status

代表状态代码的整数,以便在被拒绝的请求时返回。

default-allow

代表默认是否允许的布尔值.

JDBCLogHandler

类 Name: io.undertow.server.handlers.JDBCLogHandler

名称: jdbc-access-log

表 A.9. 参数

名称描述

格式

指定 JDBC 日志模式。默认值为 common。您还可以使用 combined,将 VirtualHost、request 方法、引用器和用户代理信息添加到日志消息。

datasource

要日志的数据源的名称。此参数是必需的,它是默认参数

tableName

表名称.

remoteHostField

远程主机地址.

userField

用户名.

timestampField

时间戳.

virtualHostField

VirtualHost.

methodField

方法.

queryField

查询.

statusField

状态.

bytesField

字节.

refererField

推荐者.

userAgentField

用户代理.

LearningPushHandler

构建浏览器请求的资源缓存的处理程序,并使用服务器推送在受支持时推送它们。

类 Name: io.undertow.server.handlers.LearningPushHandler

名称: learning-push

表 A.10. 参数

名称描述

max-age

代表缓存条目最长时间的整数。

max-entries

代表最大缓存条目数的整数

LocalNameResolvingHandler

执行 DNS 查找以解析本地地址的处理程序。当前端服务器发送 X-forwarded-host 标头或使用 AJP 时,可以创建未解析的本地地址。

类 Name: io.undertow.server.handlers.LocalNameRe resolveHandler

Name: resolve-local-name

此处理程序没有参数。

PathSeparatorHandler

将 URL 中的非斜杠分隔符字符转换为斜杠的处理程序。通常,这将反斜杠转换为 Windows 系统上的斜杠。

类 Name: io.undertow.server.handlers.PathSeparatorHandler

名称: path-separator

此处理程序没有参数。

PeerNameResolvingHandler

执行反向 DNS 查找的处理程序,以解析对等地址。

类 Name: io.undertow.server.handlers.PeerNameRe resolveHandler

Name: resolve-peer-name

此处理程序没有参数。

ProxyPeerAddressHandler

将对等地址设置为 X-Forwarded-For 标头值的处理程序。这只在始终设置此标头的代理后面使用,否则攻击者便可以伪造其对等地址。

类 Name: io.undertow.server.handlers.ProxyPeerAddressHandler

name: proxy-peer-address

此处理程序没有参数。

RedirectHandler

通过 302 重定向重定向到指定位置的重定向处理程序。该位置指定为交换属性字符串。

类名称: io.undertow.server.handlers.RedirectHandler

name: redirect

表 A.11. 参数

名称描述

value

重定向的目标.这是默认参数

RequestBufferingHandler

缓冲所有请求数据的处理程序。

类 Name: io.undertow.server.handlers.RequestBufferingHandler

名称: buffer-request

表 A.12. 参数

名称描述

buffers

定义最大缓冲区数的整数。这是默认参数

RequestDumpingHandler

将交换转储到日志的处理程序。

类 Name: io.undertow.server.handlers.RequestDumpingHandler

名称: dump-request

此处理程序没有参数。

RequestLimitingHandler

限制并发请求的最大数量的处理程序。超出限制的请求将阻止,直到上一个请求完成为止。

类 Name: io.undertow.server.handlers.RequestLimitingHandler

名称: request-limit

表 A.13. 参数

名称描述

requests

代表最大并发请求数的整数。这是默认参数,是必需的。

ResourceHandler

服务资源的处理程序。

类 Name: io.undertow.server.handlers.resource.ResourceHandler

name: resource

表 A.14. 参数

名称描述

位置

资源位置.这是默认参数,是必需的。

allow-listing

布尔值,确定是否允许目录列表.

ResponseRateLimitingHandler

将下载率限制为一定数量的字节/时间的处理程序.

类 Name: io.undertow.server.handlers.ResponseRateLimitingHandler

Name: response-rate-limit

表 A.15. 参数

名称描述

字节

限制下载率的字节数。这个参数是必需的。

time

限制下载率的时间(以秒为单位)。这个参数是必需的。

SetHeaderHandler

设置固定响应标头的处理程序。

类 Name: io.undertow.server.handlers.SetHeaderHandler

name: header

表 A.16. 参数

名称描述

标头

标头属性的名称.这个参数是必需的。

value

标头属性的值.这个参数是必需的。

SSLHeaderHandler

在连接上设置 SSL 信息的处理程序基于以下标头:

  • SSL_CLIENT_CERT
  • SSL_CIPHER
  • SSL_SESSION_ID

如果此处理程序存在于链中,它将始终覆盖 SSL 会话信息,即使这些标头不存在。

此处理程序必须仅用于反向代理后面的服务器 ,其中反向代理已配置为始终为每个请求设置这些标头,如果没有 SSL 信息,则使用这些名称剥离现有的标头。否则,恶意客户端可能会欺骗 SSL 连接。

类 Name: io.undertow.server.handlers.SSLHeaderHandler

name: ssl-headers

此处理程序没有参数。

StuckThreadDetectionHandler

此处理程序检测到需要很长时间处理的请求,这可能表示处理线程卡时卡住。

类 Name: io.undertow.server.handlers.StuckThreadDetectionHandler

Name: stuck-thread-detector

表 A.17. 参数

名称描述

threshhold

以秒为单位的整数值,用于确定请求处理所需的时间的阈值。默认值为 600( 10 分钟)。这是默认参数

URLDecodingHandler

将 URL 和查询参数解码到指定的 charset 的处理程序。如果使用此处理程序,您必须将 UndertowOptions.DECODE_URL 参数设置为 false

这不如使用在 UTF-8 解码器中构建的解析器的效率。除非您需要解码 UTF-8 以外的内容,否则您应该改为依赖解析器解码。

类 Name: io.undertow.server.handlers.URLDecodingHandler

name: url-decoding

表 A.18. 参数

名称描述

charset

charset 可解码.这是默认的参数,是必需的。