Ответы:
Вы можете использовать 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. Вот почему список поддерживаемых ошибок ограничен небольшим набором.
Есть что-то грязное, что вы можете сделать. Вы можете заблокировать ответы 503, что приведет к возврату пользовательской ошибки 502, для которой можно создать страницу с ошибкой. Однако имейте в виду, что любая причина, по которой haproxy придется вернуть 502 (неверный ответ), вернет то же самое.
В основном это так же просто, как «rspdeny ^ HTTP / 1.1 503» в сочетании с «errorfile 502».
У нас есть часть нашего сайта, работающая на устаревшей системе, и я использовал следующее:
errorfile 502 /etc/haproxy/errors/502.http
acl is_internal_error status ge 500
rspideny . if is_internal_error
Надеюсь, это поможет (даже если это будет 8 месяцев спустя).
\r\n
для разрывов строк в заголовках, чтобы соответствовать спецификации протокола HTTP. Если вы загружаете из окна Windows, убедитесь, что вы используетеbinary
режим передачи файлов s / ftp, чтобы пропустить преобразование разрывов строк Windows в разрывы строк\r\n
в стиле Unix\n
.