モジュール ngx_stream_proxy_module
ngx_stream_proxy_module
モジュール (1.9.0) は、TCP、UDP (1.9.13)、および UNIX ドメインソケットを介したデータストリームのプロキシを可能にします。
設定例
server { listen 127.0.0.1:12345; proxy_pass 127.0.0.1:8080; } server { listen 12345; proxy_connect_timeout 1s; proxy_timeout 1m; proxy_pass example.com:12345; } server { listen 53 udp reuseport; proxy_timeout 20s; proxy_pass dns.example.com:53; } server { listen [::1]:12345; proxy_pass unix:/tmp/stream.socket; }
ディレクティブ
構文 |
proxy_bind |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.2 で登場しました。
プロキシされたサーバーへの発信接続を、指定されたローカル IP address
から発信するようにします。パラメータ値には変数を含めることができます (1.11.2)。特別な値 off
は、前の設定レベルから継承された proxy_bind
ディレクティブの効果をキャンセルし、システムがローカル IP アドレスを自動的に割り当てることができます。
transparent
パラメータ (1.11.0) を使用すると、プロキシされたサーバーへの発信接続は、ローカル IP アドレスではなく、たとえばクライアントの実際の IP アドレスから発信できます。
proxy_bind $remote_addr transparent;
このパラメータが機能するためには、通常、nginx ワーカープロセスを スーパーユーザー 権限で実行する必要があります。Linux では、transparent
パラメータが指定されている場合、ワーカープロセスはマスタープロセスから CAP_NET_RAW
機能を受け継ぐため、必須ではありません (1.13.8)。また、プロキシされたサーバーからのネットワークトラフィックをインターセプトするために、カーネルルーティングテーブルを構成する必要があります。
構文 |
proxy_buffer_size |
---|---|
デフォルト |
proxy_buffer_size 16k; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.4 で登場しました。
プロキシされたサーバーからデータを読み取るために使用されるバッファの size
を設定します。また、クライアントからデータを読み取るために使用されるバッファの size
も設定します。
構文 |
proxy_connect_timeout |
---|---|
デフォルト |
proxy_connect_timeout 60s; |
コンテキスト |
stream , server |
プロキシされたサーバーとの接続を確立するためのタイムアウトを定義します。
構文 |
proxy_download_rate |
---|---|
デフォルト |
proxy_download_rate 0; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.3 で登場しました。
プロキシされたサーバーからのデータ読み取り速度を制限します。rate
は、1秒あたりのバイト数で指定します。ゼロ値を指定すると、レート制限は無効になります。制限は接続ごとに設定されるため、nginx が同時にプロキシされたサーバーへの2つの接続を開く場合、全体的なレートは指定された制限の2倍になります。
パラメータ値には変数を含めることができます (1.17.0)。レートを特定の条件に応じて制限する必要がある場合に役立つ場合があります。
map $slow $rate { 1 4k; 2 8k; } proxy_download_rate $rate;
構文 |
proxy_half_close |
---|---|
デフォルト |
proxy_half_close off; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.21.4 で登場しました。
TCP接続の各方向を独立して閉じる(「TCPハーフクローズ」)を有効または無効にします。有効にすると、TCP経由のプロキシは両側が接続を閉じるまで保持されます。
構文 |
proxy_next_upstream |
---|---|
デフォルト |
proxy_next_upstream on; |
コンテキスト |
stream , server |
プロキシされたサーバーへの接続を確立できない場合、クライアント接続を次のサーバーに渡すかどうかを決定します。
次のサーバーへの接続の受け渡しは、試行回数と時間によって制限できます。
構文 |
proxy_next_upstream_timeout |
---|---|
デフォルト |
proxy_next_upstream_timeout 0; |
コンテキスト |
stream , server |
次のサーバーへの接続の受け渡しに許可される時間を制限します。値 0
はこの制限を無効にします。
構文 |
proxy_next_upstream_tries |
---|---|
デフォルト |
proxy_next_upstream_tries 0; |
コンテキスト |
stream , server |
次のサーバーへの接続の受け渡しを試行できる回数を制限します。値 0
はこの制限を無効にします。
構文 |
proxy_pass |
---|---|
デフォルト | — |
コンテキスト |
server |
プロキシされたサーバーのアドレスを設定します。アドレスは、ドメイン名または IP アドレス、およびポートとして指定できます。
proxy_pass localhost:12345;
または、UNIXドメインソケットパスとして指定できます。
proxy_pass unix:/tmp/stream.socket;
ドメイン名が複数のアドレスに解決される場合、それらはすべてラウンドロビン方式で使用されます。さらに、アドレスはサーバーグループとして指定できます。
アドレスは、変数を使用して指定することもできます (1.11.3)
proxy_pass $upstream;
この場合、サーバー名は記述されたサーバーグループの中で検索され、見つからない場合は、リゾルバーを使用して決定されます。
構文 |
proxy_protocol |
---|---|
デフォルト |
proxy_protocol off; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.2 で登場しました。
プロキシされたサーバーへの接続に対して PROXYプロトコル を有効にします。
構文 |
proxy_requests |
---|---|
デフォルト |
proxy_requests 0; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.15.7 で登場しました。
クライアントと既存のUDPストリームセッション間のバインディングが削除されるクライアントデータグラムの数を設定します。指定された数のデータグラムを受信した後、同じクライアントからの次のデータグラムは新しいセッションを開始します。セッションは、すべてのクライアントデータグラムがプロキシされたサーバーに送信され、予期される数の応答が受信されたとき、またはタイムアウトに達したときに終了します。
構文 |
proxy_responses |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.13 で登場しました。
UDPプロトコルが使用されている場合に、クライアントデータグラムへの応答としてプロキシされたサーバーから予期されるデータグラムの数を設定します。この数は、セッションの終了のヒントとして機能します。デフォルトでは、データグラムの数は制限されていません。
ゼロ値が指定されている場合、応答は予期されません。ただし、応答が受信され、セッションがまだ終了していない場合は、応答が処理されます。
構文 |
proxy_session_drop |
---|---|
デフォルト |
proxy_session_drop off; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.15.8 で登場しました。
プロキシされたサーバーがグループから削除されたり、永続的に利用不可とマークされたりした後、プロキシされたサーバーへのすべてのセッションを終了できるようにします。これは、再解決またはAPI DELETE
コマンドによって発生する可能性があります。サーバーは、異常と見なされた場合、またはAPI PATCH
コマンドで、永続的に利用不可とマークされる可能性があります。各セッションは、クライアントまたはプロキシされたサーバーの次の読み取りまたは書き込みイベントが処理されるときに終了します。
このディレクティブは、当社の商用サブスクリプションの一部として利用できます。
構文 |
proxy_socket_keepalive |
---|---|
デフォルト |
proxy_socket_keepalive off; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.15.6 で登場しました。
プロキシされたサーバーへの発信接続の「TCPキープアライブ」の動作を構成します。デフォルトでは、ソケットに対してオペレーティングシステムの構成が有効になります。ディレクティブが値「on
」に設定されている場合、SO_KEEPALIVE
ソケットオプションがソケットに対してオンになります。
構文 |
proxy_ssl |
---|---|
デフォルト |
proxy_ssl off; |
コンテキスト |
stream , server |
プロキシされたサーバーへの接続に対して SSL/TLS プロトコルを有効にします。
構文 |
proxy_ssl_certificate |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
プロキシされたサーバーへの認証に使用される PEM 形式の証明書を含む file
を指定します。
バージョン 1.21.0 以降、変数名が file
名で使用できるようになりました。
構文 |
proxy_ssl_certificate_key |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
プロキシされたサーバーへの認証に使用される PEM 形式の秘密鍵を含む file
を指定します。
バージョン 1.21.0 以降、変数名が file
名で使用できるようになりました。
構文 |
proxy_ssl_ciphers |
---|---|
デフォルト |
proxy_ssl_ciphers DEFAULT; |
コンテキスト |
stream , server |
プロキシされたサーバーへの接続に対して有効な暗号を指定します。暗号は、OpenSSL ライブラリが理解する形式で指定します。
完全なリストは、「openssl ciphers
」コマンドを使用して表示できます。
構文 |
proxy_ssl_conf_command |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.19.4 で登場しました。
プロキシされたサーバーとの接続を確立するときに、任意のOpenSSL構成コマンドを設定します。
このディレクティブは、OpenSSL 1.0.2 以降を使用する場合にサポートされます。
同じレベルで複数の proxy_ssl_conf_command
ディレクティブを指定できます。これらのディレクティブは、現在のレベルで定義された proxy_ssl_conf_command
ディレクティブがない場合にのみ、前の構成レベルから継承されます。
OpenSSLを直接構成すると、予期しない動作が発生する可能性があることに注意してください。
構文 |
proxy_ssl_crl |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
プロキシされたサーバーの証明書を検証するために使用される、PEM形式で失効した証明書(CRL)を含むfile
を指定します。
構文 |
proxy_ssl_key_log path; |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.27.2 で登場しました。
プロキシされたサーバー接続の SSL キーのロギングを有効にし、キーログファイルのパスを指定します。キーは、Wireshark と互換性のある SSLKEYLOGFILE 形式でログに記録されます。
このディレクティブは、当社の商用サブスクリプションの一部として利用できます。
構文 |
proxy_ssl_name |
---|---|
デフォルト |
proxy_ssl_name host from proxy_pass; |
コンテキスト |
stream , server |
プロキシされたサーバーの証明書を検証するために使用されるサーバー名をオーバーライドしたり、プロキシされたサーバーとの接続を確立するときにSNIを介して渡すことを許可します。サーバー名は、変数を使用して指定することもできます (1.11.3)。
デフォルトでは、proxy_passアドレスのホスト部分が使用されます。
構文 |
proxy_ssl_password_file |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
秘密鍵のパスフレーズを含む file
を指定します。各パスフレーズは別の行に指定します。キーをロードするときに、パスフレーズが順番に試行されます。
構文 |
proxy_ssl_protocols [ |
---|---|
デフォルト |
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; |
コンテキスト |
stream , server |
プロキシされたサーバーへの接続に対して、指定されたプロトコルを有効にします。
TLSv1.3
パラメータは、1.23.4 以降デフォルトで使用されます。
構文 |
proxy_ssl_server_name |
---|---|
デフォルト |
proxy_ssl_server_name off; |
コンテキスト |
stream , server |
プロキシされたサーバーとの接続を確立するときに、TLS サーバー名表示拡張 (SNI, RFC 6066) を介したサーバー名の受け渡しを有効または無効にします。
構文 |
proxy_ssl_session_reuse |
---|---|
デフォルト |
proxy_ssl_session_reuse on; |
コンテキスト |
stream , server |
プロキシされたサーバーを使用するときに SSL セッションを再利用できるかどうかを決定します。ログに「SSL3_GET_FINISHED:digest check failed
」というエラーが表示される場合は、セッションの再利用を無効にしてみてください。
構文 |
proxy_ssl_trusted_certificate |
---|---|
デフォルト | — |
コンテキスト |
stream , server |
プロキシされたサーバーの証明書を検証するために使用される、信頼できるCA証明書を含むPEM形式のfile
を指定します。
構文 |
proxy_ssl_verify |
---|---|
デフォルト |
proxy_ssl_verify off; |
コンテキスト |
stream , server |
プロキシされたサーバーの証明書の検証を有効または無効にします。
構文 |
proxy_ssl_verify_depth |
---|---|
デフォルト |
proxy_ssl_verify_depth 1; |
コンテキスト |
stream , server |
プロキシされたサーバー証明書チェーンの検証の深さを設定します。
構文 |
proxy_timeout |
---|---|
デフォルト |
proxy_timeout 10m; |
コンテキスト |
stream , server |
クライアントまたはプロキシされたサーバー接続での連続する2つの読み取りまたは書き込み操作間の timeout
を設定します。この時間内にデータが送信されない場合、接続は閉じられます。
構文 |
proxy_upload_rate |
---|---|
デフォルト |
proxy_upload_rate 0; |
コンテキスト |
stream , server |
このディレクティブはバージョン 1.9.3 で登場しました。
クライアントからのデータの読み取り速度を制限します。rate
は、1秒あたりのバイト数で指定します。ゼロ値を指定すると、レート制限は無効になります。制限は接続ごとに設定されるため、クライアントが同時に2つの接続を開く場合、全体的なレートは指定された制限の2倍になります。
パラメータ値には変数を含めることができます (1.17.0)。レートを特定の条件に応じて制限する必要がある場合に役立つ場合があります。
map $slow $rate { 1 4k; 2 8k; } proxy_upload_rate $rate;