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; proxy_responses 1; 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権限を使って実行する必要があり、プロキシされたサーバからのネットワーク通信を捕らえるようにカーネルルーティングテーブルを構成する必要があります。
構文: |
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がプロキシされるサーバに同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。
構文: |
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_responses |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
このディレクティブはバージョン 1.9.13 から導入されました。
UDPプロトコルが使われる場合は、クライアントリクエストに応答してプロキシされたサーバからと思われるデータグラムの数を設定します。デフォルトでは、データグラムの数は無制限です: 応答データグラムは proxy_timeout 値が有効期限切れになるまで送信されるでしょう。
構文: |
proxy_ssl |
---|---|
デフォルト: |
proxy_ssl off; |
コンテキスト: |
stream , server |
プロキシされたサーバへの接続にSSL/TLSプロトコルを有効にします。
構文: |
proxy_ssl_certificate |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
プロキシされるサーバに対して認証に使われるPEM形式の証明書の ファイル
を指定します。
構文: |
proxy_ssl_certificate_key |
---|---|
デフォルト: | - |
コンテキスト: |
stream , server |
プロキシされるサーバに対して認証に使われるPEM形式の秘密鍵の ファイル
を指定します。
構文: |
proxy_ssl_ciphers |
---|---|
デフォルト: |
proxy_ssl_ciphers DEFAULT; |
コンテキスト: |
stream , server |
プロキシされたHTTPSサーバの接続で有効なcipherを指定します。cipherはOpenSSLライブラリで理解される形式で指定されます。
全てのリストは"openssl ciphers
"コマンドを使ってみることができます。
構文: |
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_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_protocols
[ |
---|---|
デフォルト: |
proxy_ssl_protocols TLSv1 TLSv1.1 TLSv1.2; |
コンテキスト: |
stream , server |
プロキシされるサーバへ指定されたプロトコルのリクエストを有効にします。
構文: |
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の値はレートの制限を無効にします。制限は接続ごとに設定されます。もしクライアントが同時に二つの接続を開いた場合は、全体のレートは指定された制限の二倍になるでしょう。