부록 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

클래스 이름: io.undertow.server.handlers.AccessControlListHandler

이름: access-control

원격 피어의 특성에 따라 요청을 수락하거나 거부할 수 있는 핸들러.

표 A.1. 매개 변수

이름설명

ACL

ACL 규칙. 이 매개 변수는 필수입니다.

attribute

교환 특성 문자열. 이 매개 변수는 필수입니다.

default-allow

핸들러가 기본적으로 요청을 수락하거나 거부할지 여부를 지정하는 부울입니다. 기본값은 false입니다.

AccessLogHandler

클래스 이름: io.undertow.server.handlers.accesslog.AccessLogHandler

이름: access-log

로그 핸들러 액세스. 이 핸들러는 제공된 형식 문자열을 기반으로 액세스 로그 메시지를 생성하고 제공된 AccessLogReceiver 에 이러한 메시지를 전달합니다.

이 핸들러는 ExchangeAttribute 메커니즘을 통해 제공된 모든 특성을 로깅할 수 있습니다.

이 팩토리는 다음 패턴에 대한 토큰 핸들러를 생성합니다.

표 A.2. 패턴

패턴설명

%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

현재 요청 스레드 이름 (나중에 스택 추적과 비교할 수 있음)

Common

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

결합

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

쿠키, 수신 헤더 또는 세션에서 정보를 작성할 수도 있습니다.

Apache 구문 다음에 모델링됩니다.

  • 수신 헤더의 %{I,xxx}
  • 나가는 응답 헤더의 %{O,xxx}
  • 특정 쿠키를 위한 %{C,xxx}
  • %{R,xxx} 여기서 xxxServletRequest의 속성입니다.
  • %{s,xxx} 여기서 xxxHttpSession의 속성입니다.

표 A.3. 매개 변수

이름설명

포맷

로그 메시지를 생성하는 데 사용되는 형식입니다. 기본 매개변수 입니다.

AllowedMethodsHandler

특정 HTTP 메서드를 허용 목록에 추가하는 핸들러입니다. 허용된 메서드 집합에 메서드가 있는 요청만 계속할 수 있습니다.

클래스 이름: io.undertow.server.handlers.AllowedMethodsHandler

이름: allowed-methods

표 A.4. 매개 변수

이름설명

방법

GET,POST,PUT 등과 같이 허용하는 메서드입니다. 기본 매개변수 입니다.

BlockingHandler

차단 요청을 시작하는 HttpHandler입니다. 스레드가 현재 I/O 스레드에서 실행 중인 경우 디스패치됩니다.

클래스 이름: io.undertow.server.handlers.BlockingHandler

이름: 차단

이 핸들러에는 매개 변수가 없습니다.

ByteRangeHandler

범위 요청에 대한 핸들러입니다. 이는 고정된 콘텐츠 길이의 모든 리소스에 대한 범위 요청을 처리할 수 있는 일반 핸들러입니다(예: content-length 헤더가 설정된 모든 리소스). 전체 콘텐츠가 생성되고 삭제되므로 이 방법이 범위 요청을 처리하는 가장 효율적인 방법은 아닙니다. 현재 이 핸들러는 단순한 단일 범위 요청만 처리할 수 있습니다. 여러 범위가 요청되면 Range 헤더가 무시됩니다.

클래스 이름: io.undertow.server.handlers.ByteRangeHandler

이름: byte-range

표 A.5. 매개 변수

이름설명

send-accept-ranges

허용 범위를 보낼지 여부에 대한 부울 값입니다. 기본 매개변수 입니다.

CanonicalPathHandler

이 핸들러는 정식 경로에 대한 상대 경로를 변환합니다.

클래스 이름: io.undertow.server.handlers.CanonicalPathHandler

이름: Canonical-path

이 핸들러에는 매개 변수가 없습니다.

DisableCacheHandler

브라우저 및 프록시의 응답 캐싱을 비활성화하는 핸들러.

클래스 이름: io.undertow.server.handlers.DisableCacheHandler

이름: disable-cache

이 핸들러에는 매개 변수가 없습니다.

DisallowedMethodsHandler

특정 HTTP 메서드를 블랙리스트로 지정하는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.DisallowedMethodsHandler

이름: disallowed-methods

표 A.6. 매개 변수

이름설명

방법

GET,POST,PUT 등과 같이 허용하지 않는 메서드입니다. 기본 매개변수 입니다.

EncodingHandler

이 핸들러는 콘텐츠 인코딩 구현의 기초 역할을 합니다. 인코딩 핸들러는 지정된 서버 측 우선 순위와 함께 이 핸들러에 위임으로 추가됩니다.

q 값은 올바른 핸들러를 결정하는 데 사용됩니다. q 값이 없는 요청이 도착하면 서버에서 사용할 인코딩으로 우선 순위가 가장 높은 핸들러를 선택합니다.

일치하는 핸들러가 없으면 ID 인코딩이라고 가정합니다. q 값이 0 으로 인해 ID 인코딩이 구체적으로 허용되지 않은 경우 핸들러는 응답 코드 406(수용되지 않음) 을 설정하고 반환합니다.

클래스 이름: io.undertow.server.handlers.encoding.EncodingHandler

이름: 압축

이 핸들러에는 매개 변수가 없습니다.

FileErrorPageHandler

오류 페이지 역할을 하기 위해 디스크에서 파일을 제공하는 핸들러입니다. 이 핸들러는 기본적으로 응답하는 응답 코드를 구성하지 않으므로 응답하는 응답 코드를 구성해야 합니다.

클래스 이름: io.undertow.server.handlers.error.FileErrorPageHandler

이름: error-file

표 A.7. 매개 변수

이름설명

file

오류 페이지로 사용할 파일의 위치.

response-codes

정의된 오류 페이지 파일로 리디렉션되는 응답 코드 목록입니다.

HttpTraceHandler

HTTP 추적 요청을 처리하는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.HttpTraceHandler

이름: trace

이 핸들러에는 매개 변수가 없습니다.

IPAddressAccessControlHandler

원격 피어의 IP 주소를 기반으로 요청을 수락하거나 거부할 수 있는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.IPAddressAccessControlHandler

이름: ip-access-control

표 A.8. 매개 변수

이름설명

ACL

액세스 제어 목록을 나타내는 문자열입니다. 기본 매개변수 입니다.

failure-status

거부된 요청에 반환할 상태 코드를 나타내는 정수입니다.

default-allow

부울은 기본적으로 허용 여부를 나타냅니다.

JDBCLogHandler

클래스 이름: io.undertow.server.handlers.JDBCLogHandler

이름: jdbc-access-log

표 A.9. 매개 변수

이름설명

포맷

JDBC 로그 패턴을 지정합니다. 기본값은 common 입니다. 또한 combined 를 사용하여 VirtualHost, 요청 메서드, referrer 및 사용자 에이전트 정보를 로그 메시지에 추가할 수 있습니다.

데이터 소스

로깅할 데이터 소스의 이름입니다. 이 매개 변수는 필수이며 기본 매개변수 입니다.

tableName

테이블 이름.

remoteHostField

원격 호스트 주소.

userField

사용자 이름.

timestampField

타임스탬프.

virtualHostField

VirtualHost.

methodField

메서드.

queryField

쿼리.

statusField

상태.

bytesField

바이트.

refererField

참조자.

userAgentField

userAgent.

LearningPushHandler

브라우저에서 요청하는 리소스 캐시를 빌드하고 server push를 사용하여 지원 시 푸시하는 핸들러.

클래스 이름: io.undertow.server.handlers.LearningPushHandler

이름: learning-push

표 A.10. 매개 변수

이름설명

최대 크기

캐시 항목의 최대 시간을 나타내는 정수입니다.

max-entries

최대 캐시 항목 수를 나타내는 정수

LocalNameResolvingHandler

로컬 주소를 확인하기 위해 DNS 조회를 수행하는 핸들러입니다. 프론트엔드 서버에서 X-forwarded-host 헤더 또는 AJP가 사용 중인 경우 확인되지 않은 로컬 주소를 만들 수 있습니다.

클래스 이름: io.undertow.server.handlers.LocalNameResolvingHandler

이름: resolve-local-name

이 핸들러에는 매개 변수가 없습니다.

PathSeparatorHandler

URL의 슬래시 구분 기호가 아닌 문자를 슬래시로 변환하는 핸들러입니다. 일반적으로 Windows 시스템에서 역슬래시를 슬래시로 변환합니다.

클래스 이름: io.undertow.server.handlers.PathSeparatorHandler

이름: path-separator

이 핸들러에는 매개 변수가 없습니다.

PeerNameResolvingHandler

역방향 DNS 조회를 수행하여 피어 주소를 확인하는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.PeerNameResolvingHandler

이름: resolve-peer-name

이 핸들러에는 매개 변수가 없습니다.

ProxyPeerAddressHandler

피어 주소를 X-Forwarded-For 헤더 값으로 설정하는 핸들러입니다. 항상 이 헤더를 설정하는 프록시 뒤에서만 사용해야 합니다. 그렇지 않으면 공격자가 피어 주소를 위조할 수 있습니다.

클래스 이름: io.undertow.server.handlers.ProxyPeerAddressHandler

이름: proxy-peer-address

이 핸들러에는 매개 변수가 없습니다.

RedirectHandler

302 리디렉션을 통해 지정된 위치로 리디렉션되는 리디렉션 핸들러. 위치는 교환 특성 문자열로 지정됩니다.

클래스 이름: io.undertow.server.handlers.RedirectHandler

이름: 리디렉션

표 A.11. 매개 변수

이름설명

value

리디렉션 대상입니다. 기본 매개변수 입니다.

RequestBufferingHandler

모든 요청 데이터를 버퍼링하는 핸들러.

클래스 이름: io.undertow.server.handlers.RequestBufferingHandler

이름: buffer-request

표 A.12. 매개 변수

이름설명

버퍼

최대 버퍼 수를 정의하는 정수입니다. 기본 매개변수 입니다.

RequestDumpingHandler

교환을 로그에 덤프하는 핸들러.

클래스 이름: io.undertow.server.handlers.RequestDumpingHandler

이름: dump-request

이 핸들러에는 매개 변수가 없습니다.

RequestLimitingHandler

최대 동시 요청 수를 제한하는 핸들러입니다. 제한 이외의 요청은 이전 요청이 완료될 때까지 차단됩니다.

클래스 이름: io.undertow.server.handlers.RequestLimitingHandler

이름: request-limit

표 A.13. 매개 변수

이름설명

requests

최대 동시 요청 수를 나타내는 정수입니다. 기본 매개변수 이며 필수입니다.

ResourceHandler

리소스를 제공하는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.resource.ResourceHandler

이름: resource

표 A.14. 매개 변수

이름설명

위치

리소스 위치. 기본 매개변수 이며 필수입니다.

allow-listing

디렉토리 목록 허용 여부를 결정하는 부울 값입니다.

ResponseRateLimitingHandler

다운로드 속도를 설정된 바이트/시간으로 제한하는 핸들러.

클래스 이름: io.undertow.server.handlers.ResponseRateLimitingHandler

이름: response-rate-limit

표 A.15. 매개 변수

이름설명

바이트

다운로드 속도를 제한하는 바이트 수입니다. 이 매개 변수는 필수입니다.

time

다운로드 속도를 제한하는 시간(초)입니다. 이 매개 변수는 필수입니다.

SetHeaderHandler

고정 응답 헤더를 설정하는 핸들러입니다.

클래스 이름: io.undertow.server.handlers.SetHeaderHandler

이름: 헤더

표 A.16. 매개 변수

이름설명

헤더

헤더 속성의 이름입니다. 이 매개 변수는 필수입니다.

value

헤더 속성 값. 이 매개 변수는 필수입니다.

SSLHeaderHandler

다음 헤더를 기반으로 연결에 대한 SSL 정보를 설정하는 핸들러입니다.

  • SSL_CLIENT_CERT
  • SSL_CIPHER
  • SSL_SESSION_ID

이 핸들러가 체인에 있는 경우 이러한 헤더가 없는 경우에도 SSL 세션 정보를 항상 재정의합니다.

이 핸들러는 역방향 프록시 뒤에 있는 서버에서만 사용해야 합니다. 여기서 역방향 프록시는 모든 요청에 대해 이러한 헤더를 항상 설정하거나 SSL 정보가 없는 경우 이러한 이름으로 기존 헤더를 제거하도록 구성되어 있어야 합니다. 그렇지 않으면 악의적인 클라이언트가 SSL 연결을 스푸핑할 수 있습니다.

클래스 이름: io.undertow.server.handlers.SSLHeaderHandler

이름: ssl-headers

이 핸들러에는 매개 변수가 없습니다.

StuckThreadDetectionHandler

이 핸들러는 처리에 시간이 오래 걸리는 요청을 탐지하여 처리 중인 스레드가 정지되었음을 나타낼 수 있습니다.

클래스 이름: io.undertow.server.handlers.StuckThreadDetectionHandler

이름: stuck-thread-detector

표 A.17. 매개 변수

이름설명

Threshhold

요청을 처리하는 데 걸리는 시간을 결정하는 정수 값(초)입니다. 기본값은 600 (10분)입니다. 기본 매개변수 입니다.

URLDecodingHandler

지정된 문자 집합에 URL 및 쿼리 매개 변수를 디코딩하는 핸들러입니다. 이 핸들러를 사용하는 경우 UndertowOptions.DECODE_URL 매개변수를 false 로 설정해야 합니다.

이 방법은 구문 분석기가 UTF-8 디코더에 빌드된 사용만큼 효율적이지 않습니다. UTF-8 이외의 것으로 디코딩해야 하는 경우가 아니면 구문 분석기를 대신 사용해야 합니다.

클래스 이름: io.undertow.server.handlers.URLDecodingHandler

이름: url-decoding

표 A.18. 매개 변수

이름설명

charactersset

디코딩할 charactersset. 기본 매개변수 이므로 필수입니다.