ngx_stream_proxy_module モジュール
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
|
---|---|
デフォルト: | - |
コンテキスト: |
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 |
---|---|
デフォルト: |
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
は秒間あたりのバイトで指定されます。0の値はレートの制限を無効にします。制限は接続ごとに設定されます。もしnginxがプロキシされるサーバに同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。
パラメータの値には変数を含めることができます (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 half-close”)を有効または無効にします。有効にすると、両側が接続を閉じるまで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;
ドメイン名が幾つかのアドレスに解決される場合は、ラウンドロビンの形式でそれら全てが使われるでしょう。更に、server groupとしてアドレスを指定することができます。
アドレスは変数を使って指定することもできます (1.11.3):
proxy_pass $upstream;
この場合、サーバ名は記述されたserver groupsの中で検索されます。もし見つからない場合は、サーバ名はresolverを使って決定されます。
構文: |
proxy_protocol |
---|---|
デフォルト: |
proxy_protocol off; |
コンテキスト: |
stream , server |
このディレクティブはバージョン1.9.2で導入されました。
プロキシされたサーバへの接続にSSL/TLSプロトコルを有効にします。
構文: |
proxy_requests |
---|---|
デフォルト: |
proxy_requests 0; |
コンテキスト: |
stream , server |
このディレクティブはバージョン1.15.7から導入されました。
クライアントと既存のUDPストリームセッション間のバインディングがドロップされるクライアントデータグラムの数をせっていします。指定された数のデータグラムを受信した後、同じクライアントからの次のデータグラムは新しいセッションを開始します。全てのクライアントのデータグラムがプロキシサーバに送信され、予想される数の応答が受信されるかタイムアウトに達すると、セッションが終了します。
構文: |
proxy_responses |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
このディレクティブはバージョン 1.9.13 から導入されました。
UDPプロトコルが使われる場合は、クライアント データグラムに応答してプロキシされたサーバからと思われるデータグラムの数を設定します。数値はセッション終了のためのヒントとして与えられます。デフォルトでは、データグラムの数は制限されません。
0の値が指定された場合、応答は予期されません。ただし、応答を受信してもセッションがまだ終了していない場合は、応答が処理されます。
構文: |
proxy_session_drop |
---|---|
デフォルト: |
proxy_session_drop off; |
コンテキスト: |
stream , server |
このディレクティブはバージョン1.15.8から導入されました。
プロキシサーバがグループから削除された後、あるいは永続的に使用不可としてマークされた後で、プロキシサーバへの全てのセッションを終了できるようにします。これは、re-resolveあるいはAPIのDELETE
コマンドが原因で発生する可能性があります。サーバは、異常またはAPIPATCH
コマンドを使っていると見なされた場合、永続的に使用不可としてマークすることができます。各セッションは、クライアントまたはプロキシサーバの次の読み込みまたは書き込みイベントが処理された場合に終了します。
このディレクティブは商用許可の一部として利用可能です。
構文: |
proxy_socket_keepalive |
---|---|
デフォルト: |
proxy_socket_keepalive off; |
コンテキスト: |
stream , server |
このディレクティブはバージョン1.15.6から導入されました。
proxiedサーバへの送信接続の“TCP keepalive”の動作を設定します。デフォルトでは、オペレーティングシステムの設定はソケットに対して有効です。ディレクティブが値“on
”に設定されている場合、ソケットのSO_KEEPALIVE
ソケットオプションがオンになります。
構文: |
proxy_ssl |
---|---|
デフォルト: |
proxy_ssl off; |
コンテキスト: |
stream , server |
プロキシされたサーバへの接続にSSL/TLSプロトコルを有効にします。
構文: |
proxy_ssl_certificate |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
プロキシされるサーバに対して認証に使われるPEM形式の証明書の ファイル
を指定します。
バージョン 1.21.0以降、file
名に変数を使うことができます。
構文: |
proxy_ssl_certificate_key |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
プロキシされるサーバに対して認証に使われるPEM形式の秘密鍵の ファイル
を指定します。
バージョン 1.21.0以降、file
名に変数を使うことができます。
構文: |
proxy_ssl_ciphers |
---|---|
デフォルト: |
proxy_ssl_ciphers DEFAULT; |
コンテキスト: |
stream , server |
プロキシされたHTTPSサーバの接続で有効なcipherを指定します。cipherは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 |
プロキシされるサーバの証明書をverifyするために使われるPEM形式の無効な証明書(CRL)のfile
を指定します。
構文: |
proxy_ssl_name |
---|---|
デフォルト: |
proxy_ssl_name host from proxy_pass; |
コンテキスト: |
stream , server |
プロキシされるサーバの証明書をverifyするために使われるサーバ名を上書きし、プロキシされるサーバと接続を確立する時にpassed through SNIできます。サーバ名は変数を使って指定することもできます (1.11.3)。
デフォルトでは、proxy_passアドレスのホスト部分が使われます。
構文: |
proxy_ssl_password_file |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
secret keysのためのそれぞれのパスフレーズが一行に指定されているfile
を指定します。パスフレーズはキーがロードされる時に順番に試されます。
構文: |
proxy_ssl_protocols
[ |
---|---|
デフォルト: |
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
コンテキスト: |
stream , server |
プロキシされるサーバへ指定されたプロトコルのリクエストを有効にします。
構文: |
proxy_ssl_server_name |
---|---|
デフォルト: |
proxy_ssl_server_name off; |
コンテキスト: |
stream , server |
プロキシされるサーバと接続を確立する時に、TLS Server Name Indication extension (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 |
プロキシされるサーバの証明書をverifyするために使われるPEM形式の信頼されたCA証明書の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つの連続する読み込みあるいは書き込み操作のタイムアウト
を設定します。 connections. この時間の間に何もデータが転送されない場合、接続は閉じられます。
構文: |
proxy_upload_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;