1

Ruby on Rails アプリケーションのリバース プロキシとして Nginx を使用しています。

アプリケーションには 2 つの重要なエンドポイントがあり、サービスに詳細を登録している顧客からデータを取得します。これらのエンドポイントは、Web サイトでホストされているかどうかに関係なく、フォームから POST データを取得します。

私たちのアプリケーションがメンテナンスのためにダウンした場合 (まれですが、SPOF サービスがいくつかあります)、POST データが確実にキャプチャされるようにして、データが永久に失われないようにしたいと考えています。

Nginx は、上流の Rails アプリケーションへの要求を処理する役割をすでに担っており、メンテナンス モードを有効にしたときに静的ページを提供するカスタム vhost 構成を備えていることを考えると、これを行うのに適した場所のようです。これは、これらの着信 POST 要求を格納するための追加のロジックに適した場所であると考えました。

私が抱えている問題は、アップストリーム サーバーを指していない限り、Nginx が POST データを解析しないことです。メンテナンス構成の場合、そうではありません。メンテナンス ページをレンダリングしているだけです。これは、$request_body¹ が空であることを意味します。おそらく、プロキシ サーバーを偽装するか、Nginx 自体を指定して特定の場所でロガーを有効にすることで、これを回避できます。しかし、これはハッキーに思えます。

私はこれについて間違った方法で進んでいますか?私はいくつかの調査を行いましたが、このユースケースを解決する標準的な方法を見つけていません。Nginx ではなく、サードパーティのツールを使用する必要がありますか?

1: ngx_http_core_moduleから: 「変数の値は、リクエスト本文がメモリ バッファに読み込まれたときに、proxy_pass、fastcgi_pass、uwsgi_pass、および scgi_pass ディレクティブによって処理された場所で利用可能になります。」

4

0 に答える 0