본문 바로가기
WIKI 기술 지식 베이스

Traefik Compress 미들웨어

원문 보기 위키 갱신

출처: Traefik Compress 미들웨어 (Compress Documentation)

본문

Compress

compress 미들웨어는 응답을 압축해요. Gzip, Brotli, Zstandard 압축을 지원해요.

설정 예시

구조화 (YAML)

# 압축 활성화
http:
  middlewares:
    test-compress:
      compress: {}

구조화 (TOML)

# 압축 활성화
[http.middlewares]
  [http.middlewares.test-compress.compress]

Labels

# 압축 활성화
labels:
  - "traefik.http.middlewares.test-compress.compress=true"

Tags

// 압축 활성화
{
  //...
  "Tags": [
    "traefik.http.middlewares.test-compress.compress=true"
  ]
}

Kubernetes

# 압축 활성화
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: test-compress
spec:
  compress: {}

설정 옵션

| 필드 | 설명 | 기본값 | 필수 | | excludedContentTypes | 압축하기 전에 들어오는 요청과 응답의 Content-Type 헤더와 비교할 콘텐츠 타입 목록이에요. excludedContentTypes에 정의된 콘텐츠 타입의 응답은 압축되지 않아요. 콘텐츠 타입은 대소문자를 무시하고 공백을 무시한 방식으로 비교돼요. excludedContentTypes와 includedContentTypes 옵션은 상호 배타적이에요. | "" | 아니요 | | defaultEncoding | 요청에 Accept-Encoding 헤더가 없거나 와일드카드(*)를 포함할 때 기본 인코딩을 지정해요. | "" | 아니요 | | encodings | 지원되는 압축 인코딩 목록을 지정해요. 최소 하나의 인코딩 값이 지정되어야 하고, 유효한 항목은 zstd (Zstandard), br (Brotli), gzip (Gzip)이에요. 목록의 순서가 우선순위를 설정하며, 맨 위 항목이 가장 높은 우선순위예요. | gzip, br, zstd | 아니요 | | includedContentTypes | 압축하기 전에 응답의 Content-Type 헤더와 비교할 콘텐츠 타입 목록이에요. includedContentTypes에 정의된 콘텐츠 타입의 응답은 압축돼요. 콘텐츠 타입은 대소문자를 무시하고 공백을 무시한 방식으로 비교돼요. excludedContentTypes와 includedContentTypes 옵션은 상호 배타적이에요. | "" | 아니요 | | minResponseBodyBytes | 응답 본문이 압축되기 위해 가져야 하는 최소 바이트 수예요. 지정된 값보다 작은 응답은 압축되지 않아요. | 1024 | 아니요 |

압축 활성화

압축의 활성화와 압축 방법 선택은 (다른 것들 중에서도) 요청의 Accept-Encoding 헤더에 의존해요.

다음 기준이 모두 충족될 때 응답이 압축돼요:

  • Accept-Encoding 요청 헤더에 gzip, *, 및/또는 br, 및/또는 zstd가 품질 값 유무와 관계없이 포함돼 있어요. Accept-Encoding 요청 헤더가 없으면 응답은 인코딩되지 않아요. defaultEncoding이 설정되면 Accept-Encoding이 없어도 응답이 인코딩돼요. 헤더가 있지만 그 값이 빈 문자열이면 압축이 꺼져요.

  • 응답이 아직 압축되지 않았어요, 즉 Content-Encoding 응답 헤더가 아직 설정되지 않았어요.

  • responseContent-Type 헤더가 excludedContentTypes 옵션 중 하나가 아니거나, includedContentTypes 옵션 중 하나예요.

  • 응답 본문이 설정된 최소 바이트 수(옵션 minResponseBodyBytes, 기본값 1024)보다 커요.

빈 Content-Type 헤더

Content-Type 헤더가 정의되지 않았거나 비어 있으면, compress 미들웨어가 콘텐츠 타입을 자동으로 감지해요. 그리고 감지한 MIME 타입에 따라 Content-Type 헤더도 설정해요.

GRPC 애플리케이션

application/grpc는 절대 압축되지 않는다는 점을 참고하세요.

더 알아보기 (Learn more)