ngx_stream_proxy_module モジュール

設定例
ディレクティブ
     proxy_bind
     proxy_buffer_size
     proxy_connect_timeout
     proxy_download_rate
     proxy_half_close
     proxy_next_upstream
     proxy_next_upstream_timeout
     proxy_next_upstream_tries
     proxy_pass
     proxy_protocol
     proxy_requests
     proxy_responses
     proxy_session_drop
     proxy_socket_keepalive
     proxy_ssl
     proxy_ssl_certificate
     proxy_ssl_certificate_key
     proxy_ssl_ciphers
     proxy_ssl_conf_command
     proxy_ssl_crl
     proxy_ssl_name
     proxy_ssl_password_file
     proxy_ssl_protocols
     proxy_ssl_server_name
     proxy_ssl_session_reuse
     proxy_ssl_trusted_certificate
     proxy_ssl_verify
     proxy_ssl_verify_depth
     proxy_timeout
     proxy_upload_rate

ngx_stream_proxy_moduleモジュール(1.9.0)は、UDP、TCPおよび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 address [transparent] | off;
デフォルト: -
コンテキスト: stream, server

このディレクティブはバージョン1.9.2で導入されました。

プロキシされたサーバへ向かって出て行く接続が、指定したローカルのIP アドレスから始まるようにします。パラメータ値は変数を含むことができます (1.11.2)。特別な値offは、上の設定レベルのproxy_bindディレクティブの継承の影響をキャンセルすることができます。これによりシステムにローカルIPアドレスを自動設定することができます。

transparent パラメータ (1.11.0) はプロキシされたサーバへ向かって出ていく接続がローカルIPアドレスでは無いようにします。例えば、クライアントの実際のIPアドレス:

proxy_bind $remote_addr transparent;

このパラメータが動作するためには、通常nginxのワーカープロセスを superuser 権限を使って実行する必要があります。Linux上では、transparentパラメータが指定された場合はワーカープロセスはマスタープロセスからCAP_NET_RAW機能を継承するため、必要ではありません (1.13.8)。プロキシされたサーバからのネットワーク通信を捕らえるためにカーネルのルーティングテーブルを設定する必要もあります。

構文: proxy_buffer_size size;
デフォルト:
proxy_buffer_size 16k;
コンテキスト: stream, server

このディレクティブはバージョン1.9.4から導入されました。

プロキシされたサーバからデータを読み込むのに使われるバッファの size を設定します。また、クライアントからデータを読み込むのに使われるバッファの size を設定します。

構文: proxy_connect_timeout time;
デフォルト:
proxy_connect_timeout 60s;
コンテキスト: stream, server

プロキシされたサーバとの接続の確立のタイムアウトを定義します。

構文: proxy_download_rate rate;
デフォルト:
proxy_download_rate 0;
コンテキスト: stream, server

このディレクティブはバージョン1.9.3から導入されました。

プロキシされるサーバからデータを読み込む時のスピードを制限します。rateは秒間あたりのバイトで指定されます。0の値はレートの制限を無効にします。制限は接続ごとに設定されます。もしnginxがプロキシされるサーバに同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。

パラメータの値には変数を含めることができます (1.17.0)。レートを特定の条件で制限するしなければならない場合に、これは有用でしょう:

map $slow $rate {
    1     4k;
    2     8k;
}

proxy_download_rate $rate;

構文: proxy_half_close on | off;
デフォルト:
proxy_half_close off;
コンテキスト: stream, server

このディレクティブはバージョン1.21.4から導入されました。

TCP接続の各方向を個別に閉じる(“TCP half-close”)を有効または無効にします。有効にすると、両側が接続を閉じるまでTCP経由のプロキシが維持されます。

構文: proxy_next_upstream on | off;
デフォルト:
proxy_next_upstream on;
コンテキスト: stream, server

プロキシされたサーバへの接続が確立できない場合、クライアント接続が次のサーバに渡されるかどうかを決定します。

次のサーバへの接続を渡すことを 試行回数 および 時間で制限することができます。

構文: proxy_next_upstream_timeout time;
デフォルト:
proxy_next_upstream_timeout 0;
コンテキスト: stream, server

次のサーバに接続を渡すことができる時間を制限します。0 の値はこの制限を無効にします。

構文: proxy_next_upstream_tries number;
デフォルト:
proxy_next_upstream_tries 0;
コンテキスト: stream, server

次のサーバに接続を渡すときに、可能な試行回数を制限します。0 の値はこの制限を無効にします。

構文: proxy_pass address;
デフォルト: -
コンテキスト: server

プロキシされるサーバのアドレスを設定します。アドレスはドメイン名またはIPアドレスと、ポートで指定することができます。

proxy_pass localhost:12345;

あるいは、UNIXドメインソケットパス:

proxy_pass unix:/tmp/stream.socket;

ドメイン名が幾つかのアドレスに解決される場合は、ラウンドロビンの形式でそれら全てが使われるでしょう。更に、server groupとしてアドレスを指定することができます。

アドレスは変数を使って指定することもできます (1.11.3):

proxy_pass $upstream;

この場合、サーバ名は記述されたserver groupsの中で検索されます。もし見つからない場合は、サーバ名はresolverを使って決定されます。

構文: proxy_protocol on | off;
デフォルト:
proxy_protocol off;
コンテキスト: stream, server

このディレクティブはバージョン1.9.2で導入されました。

プロキシされたサーバへの接続にSSL/TLSプロトコルを有効にします。

構文: proxy_requests number;
デフォルト:
proxy_requests 0;
コンテキスト: stream, server

このディレクティブはバージョン1.15.7から導入されました。

クライアントと既存のUDPストリームセッション間のバインディングがドロップされるクライアントデータグラムの数をせっていします。指定された数のデータグラムを受信した後、同じクライアントからの次のデータグラムは新しいセッションを開始します。全てのクライアントのデータグラムがプロキシサーバに送信され、予想される数の応答が受信されるかタイムアウトに達すると、セッションが終了します。

構文: proxy_responses number;
デフォルト: -
コンテキスト: stream, server

このディレクティブはバージョン 1.9.13 から導入されました。

UDPプロトコルが使われる場合は、クライアント データグラムに応答してプロキシされたサーバからと思われるデータグラムの数を設定します。数値はセッション終了のためのヒントとして与えられます。デフォルトでは、データグラムの数は制限されません。

0の値が指定された場合、応答は予期されません。ただし、応答を受信してもセッションがまだ終了していない場合は、応答が処理されます。

構文: proxy_session_drop on | off;
デフォルト:
proxy_session_drop off;
コンテキスト: stream, server

このディレクティブはバージョン1.15.8から導入されました。

プロキシサーバがグループから削除された後、あるいは永続的に使用不可としてマークされた後で、プロキシサーバへの全てのセッションを終了できるようにします。これは、re-resolveあるいはAPIのDELETEコマンドが原因で発生する可能性があります。サーバは、異常またはAPIPATCHコマンドを使っていると見なされた場合、永続的に使用不可としてマークすることができます。各セッションは、クライアントまたはプロキシサーバの次の読み込みまたは書き込みイベントが処理された場合に終了します。

このディレクティブは商用許可の一部として利用可能です。

構文: proxy_socket_keepalive on | off;
デフォルト:
proxy_socket_keepalive off;
コンテキスト: stream, server

このディレクティブはバージョン1.15.6から導入されました。

proxiedサーバへの送信接続の“TCP keepalive”の動作を設定します。デフォルトでは、オペレーティングシステムの設定はソケットに対して有効です。ディレクティブが値“on”に設定されている場合、ソケットのSO_KEEPALIVEソケットオプションがオンになります。

構文: proxy_ssl on | off;
デフォルト:
proxy_ssl off;
コンテキスト: stream, server

プロキシされたサーバへの接続にSSL/TLSプロトコルを有効にします。

構文: proxy_ssl_certificate file;
デフォルト: -
コンテキスト: stream, server

プロキシされるサーバに対して認証に使われるPEM形式の証明書の ファイルを指定します。

バージョン 1.21.0以降、file名に変数を使うことができます。

構文: proxy_ssl_certificate_key file;
デフォルト: -
コンテキスト: stream, server

プロキシされるサーバに対して認証に使われるPEM形式の秘密鍵の ファイルを指定します。

バージョン 1.21.0以降、file名に変数を使うことができます。

構文: proxy_ssl_ciphers ciphers;
デフォルト:
proxy_ssl_ciphers DEFAULT;
コンテキスト: stream, server

プロキシされたHTTPSサーバの接続で有効なcipherを指定します。cipherはOpenSSLライブラリで理解される形式で指定されます。

全てのリストは"openssl ciphers"コマンドを使ってみることができます。

構文: proxy_ssl_conf_command name value;
デフォルト: -
コンテキスト: stream, server

このディレクティブはバージョン1.19.4から導入されました。

プロキシされたサーバとの接続を確立する時に、任意のOpenSSL設定コマンドを設定します。

このディレクティブはOpenSSL 1.0.2以降を使う場合にサポートされます。

いくつかのproxy_ssl_conf_commandディレクティブは同じレベルに設定できます。現在のレベルにproxy_ssl_conf_commandディレクティブが無い場合に限り、これらのディレクティブは上の設定レベルから引き継がれます。

OpenSSLを直接設定すると、予期しない動作が発生する可能性があることに注意してください。

構文: proxy_ssl_crl file;
デフォルト: -
コンテキスト: stream, server

プロキシされるサーバの証明書をverifyするために使われるPEM形式の無効な証明書(CRL)のfileを指定します。

構文: proxy_ssl_name name;
デフォルト:
proxy_ssl_name host from proxy_pass;
コンテキスト: stream, server

プロキシされるサーバの証明書をverifyするために使われるサーバ名を上書きし、プロキシされるサーバと接続を確立する時にpassed through SNIできます。サーバ名は変数を使って指定することもできます (1.11.3)。

デフォルトでは、proxy_passアドレスのホスト部分が使われます。

構文: proxy_ssl_password_file file;
デフォルト: -
コンテキスト: stream, server

secret keysのためのそれぞれのパスフレーズが一行に指定されているfileを指定します。パスフレーズはキーがロードされる時に順番に試されます。

構文: proxy_ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2] [TLSv1.3];
デフォルト:
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
コンテキスト: stream, server

プロキシされるサーバへ指定されたプロトコルのリクエストを有効にします。

構文: proxy_ssl_server_name on | off;
デフォルト:
proxy_ssl_server_name off;
コンテキスト: stream, server

プロキシされるサーバと接続を確立する時に、TLS Server Name Indication extension (SNI, RFC 6066) を使ってサーバ名を渡すことを有効または無効にします。

構文: proxy_ssl_session_reuse on | off;
デフォルト:
proxy_ssl_session_reuse on;
コンテキスト: stream, server

プロキシされたサーバと動作する時に、SSLセッションを再利用するかどうかを決定します。ログに"SSL3_GET_FINISHED:digest check failed"が現れる場合は、セッションの再利用を無効にしてみてください。

構文: proxy_ssl_trusted_certificate file;
デフォルト: -
コンテキスト: stream, server

プロキシされるサーバの証明書をverifyするために使われるPEM形式の信頼されたCA証明書のfileを指定します。

構文: proxy_ssl_verify on | off;
デフォルト:
proxy_ssl_verify off;
コンテキスト: stream, server

プロキシされるサーバの証明書の検証を有効または無効にします。

構文: proxy_ssl_verify_depth number;
デフォルト:
proxy_ssl_verify_depth 1;
コンテキスト: stream, server

プロキシされるサーバの連鎖証明書の検証の深さを設定します。

構文: proxy_timeout timeout;
デフォルト:
proxy_timeout 10m;
コンテキスト: stream, server

クライアントあるいはプロキシされたサーバ接続上の2つの連続する読み込みあるいは書き込み操作のタイムアウトを設定します。 connections. この時間の間に何もデータが転送されない場合、接続は閉じられます。

構文: proxy_upload_rate rate;
デフォルト:
proxy_upload_rate 0;
コンテキスト: stream, server

このディレクティブはバージョン1.9.3から導入されました。

クライアントからデータを読み込む時のスピードを制限します。rateは秒間あたりのバイトで指定されます。0の値はレートの制限を無効にします。制限は接続ごとに設定されます。もしクライアントが同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。

パラメータの値には変数を含めることができます (1.17.0)。レートを特定の条件で制限するしなければならない場合に、これは有用でしょう:

map $slow $rate {
    1     4k;
    2     8k;
}

proxy_upload_rate $rate;

TOP
inserted by FC2 system