HAProxy 리디렉션 기능에 헤더 삽입

HAProxy 리디렉션 기능에 헤더 삽입

HAProxy 1.5.8이 있습니다.

나는 다음과 같은 기본 301 규칙을 가지고 있습니다.

frontend http_frontend
  bind *:80
  mode http
  redirect location https://xxxx.com code 301

응답은 다음과 같습니다.

HTTP/1.1 301 Moved Permanently
Content-length: 0
Location: https://xxxx.com
Connection: close

일반 웹서버처럼 헤더에 날짜를 추가해야 합니다.

리스패드기능은 리디렉션에 영향을 미치지 않는 것 같습니다.

가능합니까?

답변1

HaProxy의 Willy는 이를 수행하는 것이 가능하다고 여기에서 솔루션을 식별했습니다.

https://www.mail-archive.com/[이메일 보호됨]/msg25061.html

http-request redirect location "https://blah..\r\nDate: xyz"

제가 해결하고 싶었던 문제는 HSTS 헤더를 추가하는 것인데, 날짜에 사용하셔도 좋을 것 같습니다.

예쁘지는 않지만 작동하며 방금 구현했습니다. 우리는 여러 개의 HaProxy 상자가 있기 때문에 리디렉션을 생성하는 상자를 식별하는 헤더도 렌더링하고 싶었습니다.

이것은 HaProxy 1.6에서 제가 테스트한 것입니다. 다른 버전에서는 보증할 수 없습니다.

답변2

리디렉션을 본 적이 있는 브라우저에서는 불가능합니다. 무기한으로 캐시됩니다. 301 리디렉션은 사이트를 영구적으로 폐기하는 경우에만 사용해야 하며, 그래도 나쁜 생각입니다. 여전히 이전 사이트에 도달하는 트래픽에 대한 가시성을 잃게 됩니다.

따라서 다른 작업을 수행하기 전에 302 리디렉션으로 변경하세요.

Haproxy는 웹서버가 아닙니다. 동적 데이터가 포함된 헤더를 생성할 방법이 없습니다. 날짜 헤더를 정말로 원한다면 웹서버를 사용하세요. 이 작업을 수행할 수 있는 경량 제품이 여러 가지 있습니다.

또는 이유를 알려주십시오.필요이러한 헤더를 사용하면 보다 적절한 솔루션에 대해 조언을 드릴 수 있습니다.

답변3

github 문제 토론에서 Haproxy 2.2 이후로 가능하다는 것을 알았습니다.

https://stackoverflow.com/a/72830822/1849577

http-after-response set-header Cache-Control max-age=3600 if {condition}

관련 정보