NGINXのUDP/TCPリバースプロキシに関するドキュメントを読みましたが、少し混乱しています。 NGINXは、プロキシサーバーとプロキシが転送するサーバーの両方に存在する必要がありますか?
私の構成は、153.0.0.0にプロキシをローテーションしたい2つのIP(5.0.0.0、6.0.0.0)を持つ私のnginx udpプロキシサーバーです。ポートは2555になります。
設定に関して混乱しています。
サーバーが待機するIPアドレスやポートを定義するlistenディレクティブ。
これは、プロキシするサーバーのIP(153.0.0.0)、または内部IPを意味しますか?
Proxy_passディレクティブを含めて、プロキシサーバーまたはサーバーがトラフィックを転送するアップストリームグループを定義します。
どういう意味かわかりません
Proxy_bindディレクティブと必要なネットワークインターフェイスのIPアドレスを指定します。
これは内部IPですか、それともバインドする外部IPですか? (5.0.0.0)
おそらく、単純な構成が説明に役立つでしょう。いくつかの例を見つけましたが、ローカル、外部、プロキシサーバー、またはIPをプロキシしているサーバーがどれか不明なため、役に立ちません。
NGINXは、プロキシサーバーとプロキシの転送先のサーバーの両方に存在する必要がありますか?
これは通常必要ありません。
[listenディレクティブについて混乱しています。]
listen ディレクティブは、前述のように、「サーバーが待機するIPアドレスまたはポート、あるいはその両方」を定義します。 「リスニング」とは、着信接続の監視を指します。 「サーバー」はNginxをホストしているコンピューターです。そのため、プロキシ接続を受信するコンピューターのIPやポート(またはそのコンピューターが通過するポート)を指します。
例ポート8080でIP 127.0.0.1をリッスンします
listen 127.0.0.1:8080;
例ポート53(DNS)ですべてのudpトラフィックをリッスンします
listen 53 udp;
これが何を意味するのかわかりません:プロキシされたサーバーまたはサーバーがトラフィックを転送するアップストリームグループを定義するためのproxy_passディレクティブを含めます
proxy_pass ディレクティブは、Nginxプロキシーがデータを「渡す」コンピューター(特定の要求に実際に応答するサーバー)を定義します。これは、URL、IPアドレス、またはグループ名にすることができます。
例URL(プロキシデータがexample.comに渡されてリクエストが完了します)
proxy_pass http://example.com;
例IP(プロキシデータはIP 127.0.0.1に渡されてリクエストが完了します)
proxy_pass http://127.0.0.1;
例グループ(プロキシデータは、要求を完了するために定義されたグループのメンバーに渡されます)
upstream dns_servers {
server 192.168.136.130:53;
server 192.168.136.131:53;
}
#...
proxy_pass dns_servers;
上記のグループには、代わりにURLを含めることができます。 backend1.example.com:53;
。
proxy_bindディレクティブと必要なネットワークインターフェイスのIPアドレスを指定します-これは、バインドする内部IPか外部IPですか?
proxy_bind ディレクティブは、「プロキシサーバーへの発信接続を、指定されたローカルIPアドレスからオプションのポート」。そのため、ほとんどの場合、ローカルになります(ただし、リンクで詳しく説明されているように、リモートIPへのバインドは可能です)。このオプションは、複数のネットワークインターフェイスがある場合、または接続が正しく機能するために特定のIPを必要とするため、特定の送信元IPアドレスを選択する必要がある場合にのみ、非常に役立ちます。
おそらく、単純な構成が[もの]を説明するのに役立ちます。
これは状況に適している場合とそうでない場合がありますが、非常に単純なtcp/httpの例は次のようになります。
server {
listen 2555;
#...
location /app1/ {
proxy_bind 5.0.0.0;
proxy_pass http://153.0.0.0:2555;
}
location /app2/ {
proxy_bind 6.0.0.0;
proxy_pass http://153.0.0.0:2555;
}
#...
}
stream {
server {
listen 2555 udp;
proxy_pass receiving_servers;
proxy_responses: 0;
proxy_bind 5.0.0.0;
#...
}
upstream receiving_servers {
server 153.0.0.0:2555;
}
#...
}
私の構成は、153.0.0.0にプロキシをローテーションしたい2つのIP(5.0.0.0、6.0.0.0)を持つ私のnginx udpプロキシサーバーです。
私が間違っていない場合、本当にIPをローテーションしたい場合は、プロキシの前にロードバランサ(おそらくNginxを備えた別のサーバー)が必要になる可能性があります(これが純粋に内部で実行できるかどうかはわかりません)。