Chciałbym, aby haproxy używał własnej strony dokumentu 503, gdy serwer tylny (backend) wysyła kod HTTP 503. Czy to możliwe?
Widziałem coś w rodzaju „awarii monitora”, ale nie wiem, jak dodać go do interfejsu.
źródło
Chciałbym, aby haproxy używał własnej strony dokumentu 503, gdy serwer tylny (backend) wysyła kod HTTP 503. Czy to możliwe?
Widziałem coś w rodzaju „awarii monitora”, ale nie wiem, jak dodać go do interfejsu.
Możesz użyć errorfile
dyrektywy, a następnie niestandardowego .http
pliku tekstowego. Na przykład:
errorfile 503 /etc/haproxy/errors/503-mycustom.http
Treść pliku wyglądałaby wtedy jak:
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
Dyrektywa może być specyficzny dla backend również.
Ustawienie „errorfile” nie może być użyte do zmiany odpowiedzi wysłanej przez HAProxy, jeśli węzły są w trybie online. To ustawienie wpływa tylko na HAProxy, gdy wszystkie węzły są w trybie offline.
Ważne jest, aby zrozumieć, że to słowo kluczowe nie ma na celu przepisywania błędów zwracanych przez serwer, ale błędy wykryte i zwrócone przez HAProxy. Dlatego lista obsługiwanych błędów jest ograniczona do niewielkiego zestawu.
\r\n
do podziału linii w nagłówkach, aby był zgodny ze specyfikacją protokołu HTTP. Jeśli przesyłasz z okna systemu Windows, upewnij się, że korzystasz zbinary
trybu przesyłania plików s / ftp, aby pominąć konwersję podziałów linii systemu Windows\r\n
na podział linii w stylu uniksowym\n
.Jest coś brudnego, co możesz zrobić. Możesz zablokować odpowiedzi 503, co spowoduje zwrócenie niestandardowego błędu 502, dla którego możesz zbudować stronę błędu. Należy jednak pamiętać, że każdy powód, dla którego haproxy musiałby zwrócić 502 (nieprawidłowa odpowiedź), zwróci tę samą rzecz.
Zasadniczo jest to tak proste, jak „rspdeny ^ HTTP / 1.1 503” w połączeniu z „errorfile 502”.
źródło
Część naszej witryny działa w starszym systemie, a ja skończyłem z następującymi:
Mam nadzieję, że to pomaga (nawet jeśli jest to 8 miesięcy później).
źródło