HAProxy가 503 HTTP 코드를 보낼 때 사용자 정의 503 오류 문서를 어떻게 사용합니까?


20

백 서버 (백엔드)가 HTTP 503 코드를 보낼 때 haproxy가 자체 503 문서 페이지를 사용하고 싶습니다. 가능합니까?

"모니터 실패"조건과 같은 것을 보았지만이를 프런트 엔드에 추가하는 방법을 모릅니다.

답변:


22

errorfile지시문과 사용자 정의 .http텍스트 파일 을 사용할 수 있습니다 . 예를 들어 :

errorfile 503 /etc/haproxy/errors/503-mycustom.http

파일 내용은 다음과 같습니다.

HTTP/1.0 503 Service Unavailable
Cache-Control: no-cache
Connection: close
Content-Type: text/html

<html> 
  <head>
    <title>RARRR!!!!!</title>
  </head> 
  <body style="font-family:Arial,Helvetica,sans-serif;">
    <div style="margin: 0 auto; width: 960px;"> 
          <h2 >RAWR RAWR RAWR</h2>
    </div>
  </body> 
</html>

errorfile지시어뿐만 아니라 백엔드에 해당 될 수 있습니다.

노드가 온라인 인 경우 "errorfile"설정을 사용하여 HAProxy가 전송 한 응답을 변경할 수 없습니다. 이 설정은 모든 노드가 오프라인 일 때 HAProxy에만 영향을줍니다.

이 키워드는 서버가 리턴 한 오류를 재 작성하기위한 것이 아니라 HAProxy가 감지하여 리턴 한 오류를 이해하는 것이 중요합니다. 이것이 지원되는 오류 목록이 작은 세트로 제한된 이유입니다.


2
.http 파일은 \r\nHTTP 프로토콜 사양을 준수하기 위해 헤더의 줄 바꿈에 사용해야합니다 . Windows 상자에서 업로드하는 경우 binarys / ftp 파일 전송 모드 를 사용 하여 Windows 줄 바꿈 \r\n을 유닉스 스타일 줄 바꿈으로 변환하지 마십시오 \n.
wqw

6

할 수있는 더러운 것이 있습니다. 응답 503을 차단하면 오류 페이지를 작성할 수있는 사용자 정의 502 오류가 리턴됩니다. 그러나 haproxy가 502 (잘못된 응답)를 반환해야하는 모든 이유는 동일한 것을 반환합니다.

기본적으로 "errorfile 502"와 결합 된 "rspdeny ^ HTTP / 1.1 503"만큼 간단합니다.


5

우리는 웹 사이트의 일부를 레거시 시스템에서 실행하고 있으며 다음을 사용하여 끝났습니다.

errorfile 502 /etc/haproxy/errors/502.http

acl is_internal_error status ge 500

rspideny . if is_internal_error

도움이되기를 바랍니다 (8 개월 후에도).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.