AWS re:Post을(를) 사용하면 다음에 동의하게 됩니다. AWS re:Post 이용 약관

유효하지 않은 헤더를 삭제하도록 Application Load Balancer를 구성하려면 어떻게 해야 합니까?

2분 분량
0

Application Load Balancer에서 유효하지 않은 헤더를 삭제하고 싶습니다.

간략한 설명

Application Load Balancer는 routing.http.drop_invalid_header_fields.enabled 속성을 사용하여 유효하지 않은 HTTP 헤더를 삭제합니다. 이 속성의 기본값은 FALSE입니다.

속성의 기본값이 TRUE로 설정된 경우 Application Load Balancer는 유효하지 않은 HTTP 헤더를 삭제합니다. 속성 값이 FALSE인 경우 로드 밸런서는 원래 요청과 함께 헤더를 대상으로 라우팅합니다.
참고: Elastic Load Balancing을 사용하려면 등록된 모든 메시지 헤더 이름이 정규식 **[-A-Za-z0-9]+**를 준수해야 합니다. 각 헤더 이름은 영숫자 또는 하이픈으로 구성됩니다.

drop_invalid_header_field 속성이 작동하는지 확인

서버 측에서 패킷 캡처를 수행합니다. 속성이 비활성화되면 Application Load Balancer는 유효하지 않은 HTTP 헤더를 백엔드 서버에 전달합니다. 속성이 활성화되면 로드 밸런서는 유효한 헤더만 백엔드 서버에 전달합니다. 유효하지 않은 헤더는 삭제됩니다.

Wireshark를 사용하여 서버 측에서 HTTP 헤더 보기(비활성화된 속성)

클라이언트 시스템에서 CURL 요청의 +agent: world 헤더를 전달합니다. 참고로 이 헤더는 유효하지 않은 값을 사용합니다.

Hypertext Transfer Protocol
    GET / HTTP/1.1\r\n
    X-Forwarded-For: x.x.x.x\r\n
    X-Forwarded-Proto: http\r\n
    X-Forwarded-Port: 80\r\n
    Host: xxxxxxxx.elb.amazonaws.com\r\n
    X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
    User-Agent: curl/8.4.0\r\n
    Accept: */*\r\n
    +agent: world\r\n

이 출력은 서버 측 Wireshark 캡처에서 가져온 것입니다. Application Load Balancer는 유효하지 않은 헤더를 백엔드 서버에 전달합니다.

Wireshark를 사용하여 서버 측에서 HTTP 헤더 보기(활성화된 속성)

클라이언트 시스템에서 CURL 요청의 +agent: world 헤더를 전달합니다. 참고로 이 헤더는 유효하지 않은 값을 사용합니다.

Hypertext Transfer Protocol
    GET / HTTP/1.1\r\n
    X-Forwarded-For: x.x.x.x\r\n
    X-Forwarded-Proto: http\r\n
    X-Forwarded-Port: 80\r\n
    Host: xxxxxxxx.elb.amazonaws.com\r\n
    X-Amzn-Trace-Id: Root=xxxxxxxxxx\r\n
    User-Agent: curl/8.4.0\r\n
    Accept: */*\r\n

속성이 활성화되면 Application Load Balancer가 요청을 백엔드 서버로 보냅니다. 하지만 이 서버 측 출력에서 볼 수 있듯이 로드 밸런서는 유효하지 않은 헤더를 삭제합니다.

관련 정보

로드 밸런서 속성

AWS 공식
AWS 공식업데이트됨 7달 전