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ディレクティブは、だけでなく、バックエンドに特定することができます。

ノードがオンラインの場合、「エラーファイル」設定を使用してHAProxyによって送信される応答を変更することはできません。この設定は、すべてのノードがオフラインの場合にのみHAProxyに影響します。

このキーワードは、サーバーから返されたエラーを書き換えるためのものではなく、HAProxyによって検出および返されたエラーを書き換えるためのものではないことを理解することが重要です。これが、サポートされるエラーのリストが小さなセットに制限されている理由です。


2
.httpファイルは\r\n、HTTPプロトコル仕様に準拠するために、ヘッダーの改行に使用する必要があることに注意してください。Windowsボックスからアップロードする場合は、必ずbinarys / ftpファイル転送のモードを使用して、Windowsの改行\r\nをUNIXスタイルの改行に変換しないようにしてください\n
wqw 14

6

あなたができる汚いことがあります。応答503をブロックすると、エラーページを作成できるカスタム502エラーが返されます。ただし、haproxyが502(無効な応答)を返さなければならない理由は同じものを返すことに注意してください。

基本的には、「rspdeny ^ HTTP / 1.1 503」と「errorfile 502」の組み合わせと同じくらい簡単です。


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.