Answers:
您可以使用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
指令也可以特定于后端。
如果节点在线,则无法使用“错误文件”设置来更改HAProxy发送的响应。当所有节点都脱机时,此设置仅影响HAProxy。
重要的是要理解,此关键字不是要重写服务器返回的错误,而是要重写HAProxy检测并返回的错误。这就是为什么支持的错误列表被限制为一小组的原因。
您可以做一些肮脏的事情。您可以阻止响应503,这将导致返回自定义502错误,您可以为其建立错误页面。但是,请记住,haproxy必须返回502(无效响应)的任何原因都将返回相同的结果。
基本上,它就像“ rspdeny ^ HTTP / 1.1 503”和“ errorfile 502”一样简单。
\r\n
用于标头中的换行符,以符合HTTP协议规范。如果从Windows盒上传,请确保使用binary
s / ftp文件传输模式来跳过将Windows换行符转换\r\n
为Unix样式换行符的操作\n
。