この「単純な」Apache ProxyPassディレクティブを使用しています。
<VirtualHost *:80>
ProxyPreserveHost On
ProxyPass / http://0.0.0.0:3000/
ProxyPassReverse / http://0.0.0.0:3000/
ServerName my.name.org
</VirtualHost>
これはうまく機能します。ポート3000でリッスンしている内部サーバーが一時的に「ダウン」し、「my.name.org」にリクエストを行うと、503が期待どおりに返されます。ただし、内部サーバーが起動しても、「my.name.org」への後続のリクエストは「一定期間」503になります(一方、503を生成する初期リクエストが発生しない場合、後続のリクエストは通常どおり動作しません)。内部サーバーを再起動した後、Apacheがそれに気づき、より迅速に使用できるように調整できる値はありますか?
バックエンドサーバーへの接続が生成され、エラーが発生した場合(デフォルトは5xx
コード)、Apacheはその接続をError Stateとしてマークします。 Apacheは、retry
のProxyPass
パラメーターによって制御される期間、その接続を使用しません。デフォルトは60秒です。
つまり、変更しない限り、バックエンドが5xx
リターンコードを生成すると、Apacheは60秒間リクエストを送信しませんが、すぐにクライアントブラウザーに503を返します。
これを変更するには、retry
を小さい数値に設定します。たとえば、再試行する前に5秒だけ待機する場合:
ProxyPass / http://0.0.0.0:3000/ retry=5
このオプションおよびその他の多くの詳細は、次のProxyPass
ドキュメントにあります。 https://httpd.Apache.org/docs/current/mod/mod_proxy.html#proxypass