ホームページ  >  記事  >  バックエンド開発  >  Nginxコア構成の深い理解

Nginxコア構成の深い理解

WBOY
WBOYオリジナル
2016-07-28 08:27:13971ブラウズ

元のリンク: http://blog.csdn.net/xyang81/article/details/51814787

Nginx 構成はモジュール単位で編成されており、各モジュールには 1 つ以上の命令が含まれており、その命令は最小の構成ファイルに含まれています。構成単位では、すべての構成項目は命令です。たとえば、http コア モジュールの include、default_type、および sendfile 命令はすべて http モジュールに属します。すべての nginx モジュールの手順については、公式ドキュメントを参照してください: http://nginx.org/en/docs/dirindex.html

<code>注意:以下配置中的“上下文”表示指令可以配置在哪些模块中。
main:顶层配置,约束服务器的行为
</code>

1. サーバーレベルのコア構成

最大数を設定しますnginx が開くことができるファイル記述子の数。 Linux には各プロセスで開くことができるファイル記述の数に制限があるため、通常、デフォルトは 1024 です。Linux がデフォルトで開くことができるファイル ハンドルの数の制限は、ulimit -n FILECNT または /etc を使用して変更できます。 /securit/limits.conf 設定。推奨値は、システムの最大数/プロセスの数です。ただし、プロセス間の負荷は均等に分散されていないため、より大きく設定することができます。推奨値: 655350のパスを設定しますエラーログファイルとログレベル。ログ レベルには、デバッグ、情報、通知、警告、エラー、クリティカル、アラート、および緊急が含まれます。 nginxのログはsyslogを利用して出力されるため、出力されるログ形式は一定であり、システム運用保守担当者はログルールに従ってエラーチェックや統計分析を行うことができます。詳細については、公式ドキュメントを参照してください: http://nginx.org/en/docs/ngx_core_module.html#error_log nginx デーモン ID ストレージ ファイル パスを設定します (ワーカー プロセスではありません)
コマンド コンテキスト 構文 デフォルト値 機能の説明
user main userEveryone nobyd; nobody ワーカースレッドを実行するためのユーザー権限
デーモン main デーモンはい; はい nginxがデーモンとして実行されるかどうか?
worker_processes main worker_processesnumber; 1 ワーカープロセスの数を構成します。従来の Web サーバー (Apache など) はすべて同期ブロッキング モデルであり、1 つのリクエストが入力される (スレッド) モードであり、受信 (スレッド) の数がある程度増加すると、スレッドとプロセスの切り替えにより多くの CPU 時間が浪費され、パフォーマンスが低下します。急激に変化するため、負荷率は高くありません。 Nginx はイベントベースのノンブロッキング多重化 (epoll または kquene) モデルであり、1 つのプロセスが短期間に多数のリクエストに応答できます。一般に、この値を CPU コアの数以下に設定することをお勧めします。CPU コアの数よりも大きい場合は、メリットが得られません。むしろ、プロセス切り替えのオーバーヘッドに悪影響を及ぼす可能性があります。
worker_connections events worker_connectionsnumber; 1024 プロセスごとに許可される同時接続の最大数を示す、同時応答機能の主要な構成値。 maxConnection = work_connections * work_processes; 通常、ブラウザは同時に 2 つの接続を開きます。nginx が到着した後のサーバーへの接続数も 2 つになります。通常、maxConnection = work_connections * work_processes / 2; アンチプロキシ サーバーとして動作する場合、maxConnection = work_connections * work_processes / 4;
use events use epoll; さまざまなプラットフォームに応じて、最も効率的なものを選択します接続処理メソッド 接続要求の処理メソッドメソッドを指定します。 Linux カーネル 2.6 以降では、デフォルトで epoll メソッドが使用されます。他のプラットフォームについては、http://nginx.org/en/docs/events.html を参照してください。 注: 超高負荷下で最高のネットワーク応答機能を実現するには、ネットワークを最適化する必要があります 関連する Linux カーネル パラメーター
worker_cpu_affinity main worker_cpu_affinity cpumask…; None ワーカー プロセスを特定の CPU にバインドし、プロセス間の切り替えによる CPU オーバーヘッドを削減します。バイナリ ビットを使用して、プロセスがどの CPU コアにバインドされているかを示します。たとえば、8 コアと 4 プロセスを使用する場合の設定方法は次のようになります。 Linux カーネル ファイル記述子の数
error_log main、http、mail、stream、server、location error_log ログ ファイルのパス ログ レベル; error_log logs/error.log error;
pid main pid デーモン ソケット ファイル パス; pid logs/nginx .pid

上記は、サーバーレベルの動作を管理する nginx のトップレベルの構成です。設定の詳細については、公式ドキュメントを参照してください: http://nginx.org/en/docs/ngx_core_module.html#working_directory

2. HTTP モジュールのコア設定

nginx は、最も一般的に接続される HTTP リバース プロキシ サーバーです。 http リクエストに関連する設定である必要があります。http モジュールに関連するすべての設定は http { ... } 設定に配置されます。

tcp_nolay と tcp_nopush の 2 つのパラメータが一緒に使用され、これら 2 つの設定が有効になっている場合、データ パケットが特定のサイズに達した後にデータが送信されます。これにより、ネットワーク通信の数が減り、ブロックされる可能性が低くなりますが、応答の適時性にも影響します。ファイルのダウンロードなどのビッグデータ通信のシナリオに適しています。 クライアントがサーバーへの接続を確立するためのタイムアウト。指定された時間が経過すると、サーバーは切断されます。デフォルトは 75 秒です。各接続の生存時間を減らすと、応答する接続の数がある程度増加する可能性があるため、一般にこの値は適切に減らすことができます コンテンツ圧縮をオンにすると、クライアントのアクセス トラフィックとネットワーク帯域幅を効果的に削減できます 単位は k で、デフォルトは 20k です。コンテンツが最小長を超える場合にのみ圧縮をオンにします。短すぎるコンテンツは適切に圧縮されず、圧縮プロセスによってシステム リソースも浪費されるためです。この圧縮された長さは、http 応答ヘッダーの Content-Length フィールドとしてクライアントに返されます。 推奨値: 1000圧縮レベル、デフォルト値は1です。範囲は 1 ~ 9 です。圧縮レベルが高いほど圧縮率も高くなりますが、システム パフォーマンス要件も高くなります。推奨値: 4圧縮コンテンツタイプ、デフォルトはtext/html;。一般的にはhtmlテキストのみを圧縮します。js、css、jsonなどの一般的なテキストデータを組み合わせることができます。例: text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
コマンド コンテキスト 構文 関数の説明
types http、server、location types { MIMEタイプファイルサフィックス }; Config;処理できるファイルの種類を確認してください。例: text/html html htm shtml;
include any include file path; 外部ファイルの内容を構成として nginx.conf ファイルにコピーします。例: include mime.type; 現在のディレクトリにある mime.type 設定ファイルを nginx 設定ファイルにコピーします。ファイル パスは相対パスまたは絶対パスにすることができます。ファイル名には、* を使用してワイルドカード文字を表すことができます。
default_type http、サーバー、場所 default_type MIME タイプ; ファイル名とサフィックスのマッピング関係。デフォルトの MIME タイプを設定します。 要求されたファイル タイプが type ディレクティブで見つからない場合は、default_type で指定されたタイプが使用されます。デフォルトはテキスト/プレーンタイプです。
access_log http、サーバー、場所、場所にある場合は、limit_例外 access_logパス[format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
アクセス ログをオフまたは有効にします。デフォルト設定は次のとおりです: access_log logs/access.log combined で定義されたログ形式が、http モジュールのデフォルト形式である logs/access.log ファイルに書き込まれることを意味します。バッファーおよび gzip パラメーターのいずれかが定義されている場合、キャッシュがいっぱいになると、デフォルトでログが最初にキャッシュに書き込まれ、gzip 圧縮が有効になっている場合は、キャッシュ内のログが gzip によって圧縮されてファイルに書き込まれます。 、nginx モジュールのインストール時に gzip が追加されていることを確認する必要があります。キャッシュ サイズのデフォルトは 64K です。 gzip 圧縮レベルは 1 から 9 まで設定できます。レベルが高いほど、圧縮効率が向上し、ログ ファイルが占有するスペースは小さくなりますが、より高いシステム パフォーマンスが必要になります。デフォルト値は 1 です。 http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log
log_format http log_format 形式名 ログ形式 でアクセスできる http アクセス ログの形式を定義します。ログ形式 httpモジュールの組み込み変数が存在する場合、ログとして出力されます。例: ddr requestなど。その他の変数については、http://nginx.org/en/docs/http/ngx_http_core_module.html#variablessendfileを参照してください。 http、サーバー、場所 (場所にある場合) sendfile オン | オフ カーネル コピー モードを有効にします。静的サーバーであると、最大 IO アクセス速度が向上します。従来のファイルの読み取りと書き込みのプロセスは次のとおりです: ハード ディスク>>> ユーザー バッファ>> sendfile を使用したファイルの読み取りと書き込みのプロセスは次のとおりです。ハードディスク >> カーネル バッファ (カーネルソケット バッファにすばやくコピー) >> プロトコル スタックでは、sendfile システム コールによってカーネル モードとユーザー モード間のスイッチとデータ コピーの数が減り、データが直接コピーされることがわかります。カーネル キャッシュからプロトコルまで、スタックにより効率が大幅に向上します。この記事で詳しく紹介します: http://xiaorui.cc/?p=1673tcp_nolayhttp,server,locationoff|on;tcp_nopushhttp,server , locationoff|on;
keepalive_timeout http,server,location keepalive_time 65;
gzip http、server、location、場所にある場合 gzip on | off;
gzip_min_length http、server、location gzip_min_length length;
gzip_comp_level http、サーバー、場所 gzip_comp_level 1~9;
gzip_types http、server、location gzip_types mime-type…;
open_file_cache http、server、location open_file_cache off; max =N [inactive=time]; デフォルト値はオフです。キャッシュの最大数とキャッシュされたファイルの未使用期間を設定します。推奨値: max=655350 (worker_rlimit_nofile パラメータと一致) inactive=20s;
open_file_
cache_min_uses
http,server,location open_file_cache_min_usesnumber; デフォルトは 1、有効期間内のファイル使用の最小数期間。推奨値: 2
open_file
_cache_valid
http、サーバー、場所 open_file_cache_valid time; デフォルトは60秒、検証キャッシュの有効期間。 これは、キャッシュされたファイルを 60 秒ごとにチェックし、20 秒以内に 2 回以上使用されなかったファイルはキャッシュから削除されることを意味します。 lru アルゴリズムを使用します。
server server { … } http HTTPサーバーの仮想ホストを構成するために使用されるHTTPサーバーのコア構成、複数の
listen listen ip[:port] サーバー 仮想ホストがリッスンする IP アドレスとポートを構成します。デフォルトでは、ローカル IP アドレスとポート 80 または 8000 をリッスンします。 IP のみが設定され、ポートが設定されていない場合は、デフォルトでポート 80 が使用されます。ポートのみが設定され、IP が設定されていない場合は、デフォルトでローカル IP が使用されます。詳細な設定については、http://nginx.org/en/docs/http/ngx_http_core_module.html#listen
server_name server_name domain_name …; server 仮想サーバーのドメイン名を設定します。 host では、スペースで区切って複数の を指定できます。デフォルトは空です
charset http、server、locationの場合は charset charset | off; URLパラメータの文字化けの問題に関連するリクエストのエンコーディングを設定します。
location server, location location [ = | ~ | ~* | ^~ ] uri { … }
location @name { … }
client エンドリクエストサーバーの URL アドレスの一致ルール。複数の一致ルールを設定できます
').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });

上記では、Nginx のコア構成をその側面も含めて詳しく説明しましたが、PHP チュートリアルに興味のある友人に役立つことを願っています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:PHPの通常関数次の記事:PHPの通常関数