nginx 'listen'ディレクティブのさまざまな値を理解する


10

私はnginx configを書いていて、根本的な質問があります。

違いは何ですか:

listen 443 ssl;vs listen [::]:443 ssl;vslisten [::]:443 ssl http2;

私の目標は、このWebアプリケーションを保護することですが、古いクライアントとの互換性も維持します。

注:私[::]:443はそれがipv6に関係していることを理解していますが、この場合はipv4も含まれますか?私のコンセプトをクリアしたい。

回答:


16

listen 443 ssl:nginxにサーバー上のすべてのipv4アドレス、ポート443をリッスンさせます(0.0.0.0:443

ながら

listen [::]:443 ssl:nginxにサーバー上のすべてのipv6アドレス、ポート443をリッスンさせます(:::443


[::]:443パラメータを指定しない限り、デフォルトではnginxはipv4で応答しませんipv6only=off

listen [::]:443 ipv6only=off;


ドキュメントによると:http : //nginx.org/en/docs/http/ngx_http_core_module.html#listen

ssl:

sslパラメーター(0.7.14)を使用すると、このポートで受け入れられるすべての接続がSSLモードで機能するように指定できます。

http2:

http2パラメータ(1.9.5)は、HTTP / 2接続を受け入れるようにポートを構成します。

これは、HTTP / 2接続のみを受け入れることを意味するものではありません。

あたりとして、RFC7540

ネクストホップでのHTTP / 2のサポートに関する事前の知識なしに「http」URIを要求するクライアントは、HTTPアップグレードメカニズムを使用します。クライアントは、 "h2c"トークンを含むUpgradeヘッダーフィールドを含むHTTP / 1.1リクエストを作成することによってこれを行います。

HTTP / 2をサポートしないサーバーは、アップグレードヘッダーフィールドが存在しないかのように要求に応答できます。

HTTP/1.1 200 OK Content-Length: 243 Content-Type: text/html

HTTP / 2をサポートするサーバーは、101(スイッチングプロトコル)応答でアップグレードを受け入れます。101応答を終了する空の行の後、サーバーはHTTP / 2フレームの送信を開始できます。

要約する :

HTTP / 2をサポートしないクライアントは、サーバーにHTTP / 2通信のアップグレードを要求することは決してありません。それらの間の通信は完全にHTTP1 / 1になります。

HTTP / 2をサポートするクライアントは、サーバーに(HTTP1 / 1を使用して)HTTP / 2アップグレードを要求します。

  • サーバーがHTTP / 2に対応している場合、サーバーはクライアントにそのことを通知します。それらの間の通信はHTTP / 2に切り替えられます。
  • サーバーがHTTP / 2に対応していない場合、サーバーはHTTP1 / 1で応答するアップグレード要求を無視します。サーバー間の通信は十分なHTTP1 / 1のままである必要があります。

たぶんここでもっと要約されます:http : //qnimate.com/http2-compatibility-with-old-browsers-and-servers/


ただし、nginxドキュメントには、HTTP / 2 over TLSについて次のように記載されています。

TLS経由のHTTP / 2接続を受け入れるには、「アプリケーションレイヤープロトコルネゴシエーション」(ALPN)TLS拡張サポートが必要です。これは、OpenSSLバージョン1.0.2以降でのみ使用できます。

古いクライアントがこの要件に準拠していることを確認してください。


0

ipv6onlyIPv6アドレスがIPv4にも適用されるかどうかを決定するというオプションがあります。デフォルトではオンになっています(オフになっていないことを意味します)。

マニュアルには1度しか設定できないと記載されています。つまり、1つのlistenディレクティブでオフにすると、すべてオフになります。

詳細については、このドキュメントを参照してください。


HTTP / 2に関するこの記事を参照してください。
リチャードスミス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.