DEV Community 日本語 フォロー nginx 1.31.5 の制御 API は、リロード失敗時にログ行ではなく HTTP 422 を返します。 Nginx version 1.31.5 は、Unix ソケットまたは TCP ポート経由でアクセス可能な新しい制御 API を導入しました。この API は HTTP ベースのリロードを可能にし、従来のシグナルベースのリロード方法とは異なり、構造化された応答を提供します。コマンドラインフラグで有効化でき、公式 Docker イメージには必要なコンパイルが含まれています。API のエンドポイントツリーは、連続した GET リクエストを行うことで検出できます。主要なエンドポイントには、ワーカー PID を取得するための /1/control/processes と、ライブ設定を取得するための /1/control/config が含まれます。/1/control/config への PATCH リクエストは、ディスクから設定ファイルを再読み込みすることで設定リロードをトリガーします。この API は、失敗したリロード時に、情報量の少ないシグナル方法とは異なり、解析可能な JSON エラーメッセージを返すことで大きな利点をもたらします。初期の想定とは異なり、API リロードプロセスはシグナル方法よりも明らかに高速ではありません。同時実行テストでは、使用された方法に関わらず、インフライトリクエストはリロードの影響を受けないことが示されました。制御 API は、ネイティブ認証がなく、ネットワークアクセス権を持つ誰でも悪用できるため、ネットワークポートにバインドされた場合、重大なセキュリティリスクを伴います。Unix ソケットに厳格なファイル権限でソケットをバインドすることが推奨される緩和策であり、特権のないユーザーを効果的にブロックします。制御ソケットを有効にすると、マスタープロセスにわずかなメモリオーバーヘッドが発生します。テストにより、バインドマウントされた設定ファイルへのホスト側のファイル編集が実行中のコンテナに伝播しない場合があることが明らかになり、即時更新には docker cp のような方法が必要になります。制御 API の主な利点は、リロード中の優れたエラーレポート機能にあり、デプロイスクリプトに価値があります。制御ソケットは、適切な権限を持つ Unix ソケットにのみバインドすることを強く推奨します。管理者は、Nginx バージョン 1.31.5 以降で、ネットワークにバインドされた制御ソケットがないかシステムを監査する必要があります。 nginx 1.31.5's control API turns a failed reload into an HTTP 422 instead of a log line dev.to DEV Community 日本語 RSS thenote.app
/1/control/processesと、ライブ設定を取得するための/1/control/configが含まれます。/1/control/configへの PATCH リクエストは、ディスクから設定ファイルを再読み込みすることで設定リロードをトリガーします。この API は、失敗したリロード時に、情報量の少ないシグナル方法とは異なり、解析可能な JSON エラーメッセージを返すことで大きな利点をもたらします。初期の想定とは異なり、API リロードプロセスはシグナル方法よりも明らかに高速ではありません。同時実行テストでは、使用された方法に関わらず、インフライトリクエストはリロードの影響を受けないことが示されました。制御 API は、ネイティブ認証がなく、ネットワークアクセス権を持つ誰でも悪用できるため、ネットワークポートにバインドされた場合、重大なセキュリティリスクを伴います。Unix ソケットに厳格なファイル権限でソケットをバインドすることが推奨される緩和策であり、特権のないユーザーを効果的にブロックします。制御ソケットを有効にすると、マスタープロセスにわずかなメモリオーバーヘッドが発生します。テストにより、バインドマウントされた設定ファイルへのホスト側のファイル編集が実行中のコンテナに伝播しない場合があることが明らかになり、即時更新にはdocker cpのような方法が必要になります。制御 API の主な利点は、リロード中の優れたエラーレポート機能にあり、デプロイスクリプトに価値があります。制御ソケットは、適切な権限を持つ Unix ソケットにのみバインドすることを強く推奨します。管理者は、Nginx バージョン 1.31.5 以降で、ネットワークにバインドされた制御ソケットがないかシステムを監査する必要があります。