nginx 設定の詳しい説明
#グローバル設定
#高レベルの設定
user www-data#実行中のユーザーのデフォルト設定
pid /var/run/nginx.pid;#ポート番号のデフォルト設定
worker_processes 8;#nginx が提供するタイミングを定義外部への Web サービス ワーカー プロセスの数
# 最適な値は、CPU コアの数、データを保存するハードディスクの数、ロード モードなど (ただしこれらに限定されない) 多くの要因によって異なります
# 通常は設定されますCPU の数と同じになるようにします (「自動」に設定すると、自動的に検出しようとします)
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;# 8 つのプロセスを 8 つの CPU に割り当てることもできます複数書くか、1 つを割り当てるプロセスを複数の CPU に
worker _rlimit_nofile 200000;#ワーカー プロセスを変更しますオープン ファイルの最大数の制限
#設定しない場合、この値はオペレーティング システムの制限になります
#設定後、オペレーティング システムと Nginx はより多くのファイルを処理できるようになります「ulimit -a」なので、この値を高く設定すると、nginx で「開いているファイルが多すぎる」問題が発生しなくなります
# 10240 を入力すると、合計同時実行数が 30,000 ~ 40,000 に達すると、プロセス数が増加する可能性があります。 10240 を超えると、502 エラーが返されます
#このコマンドは、nginx プロセスによって開かれるファイル記述子の最大数を参照します。理論値は、開いているファイルの最大数 (ulimit -n) をファイルの数で割ったものです。ただし、nginx の割り当てリクエストはそれほど均一ではないため、ulimit -n Consistent
events {
worker_connections 102400; #ワーカー プロセスによって同時にオープンできる接続の最大数を設定することをお勧めします。 #上記のworker_rlimit_nofileが設定されている場合、この値を非常に高く設定できます。
#キーポイント: クライアントの最大数は、システムで利用可能なソケット接続の数 (~64K) によっても制限されるため、非現実的に高い数を設定してもメリットはありません
#理論上、各クライアントの最大接続数はnginx サーバーは、worker_processes*worker_connections
multi_accept on; #新しい接続通知を受信した後、できるだけ多くの接続を受け入れるように nginx に指示します
epoll を使用します #クライアント スレッドを再利用するためのポーリング方法を設定します
}
http {
server_tokens off; nginx を実行させない方が速いですが、エラー ページで nginx のバージョン番号をオフにすることができ、セキュリティに優れています
sendfile on; #sendfile() を動作させます
tcp_nopush on; #nginx にパケットで送信するよう指示しますファイルを 1 つずつ送信するのではなく
tcp_nolay on; #nginx にデータをキャッシュせず、少しずつ送信するように指示します - データを時間内に送信する必要がある場合は、この属性をアプリケーションに設定する必要があります。小さな断片が送信されます データ情報を入力するとすぐに戻り値が取得できません
access_log off; #nginxがアクセスログを保存するかどうかを設定します。このオプションをオフにすると、ディスク IO 操作が高速化されます (別名、YOLO)
error_log /var/log/nginx/error.log crit; #重大なエラーのみをログに記録するように nginx に指示します
keepalive_timeout 10; #クライアントに keep を割り当てます -aliveリンクタイムアウト。このタイムアウトの後、サーバーはリンクを閉じます。 ngnix がより長く動作し続けることができるように、この値を低く設定しました
client_header_timeout 10; #リクエスト ヘッダーのタイムアウトを設定します。これを低く設定することもできます。
client_body_timeout 10; #リクエストボディのタイムアウトを設定します。これを低く設定することもできます。
reset_timedout_connection on; #nginx に応答しないクライアント接続を閉じるように指示します。これにより、そのクライアントが占有しているメモリ空間が解放されます。
send_timeout 10;#クライアントの応答タイムアウトを指定します。この設定はフォワーダー全体に適用されるのではなく、クライアントの読み取り操作間に適用されます。この期間中にクライアントがデータを読み取らない場合、nginx は接続を閉じます
limit_conn_zone $binary_remote_addr z>
#さまざまなキー (現在の接続数など) を保存するために使用される共有メモリのパラメータを設定します。 #5m は 5 メガバイトです。この値は、(32K*5) 32 バイトの状態または (16K*5) 64 バイトの状態を保存するのに十分な大きさに設定する必要があります。
limit_conn #指定されたキーの最大接続数を設定します。ここでのキーは addr で、設定する値は 100 です。これは、各 IP アドレスが同時に最大 100 個の接続を開くことを許可することを意味します
include /etc/nginx/mime.types;現在のファイルの内容の説明。ここでは、後で使用する一連の MIME タイプをロードするために使用します
default_type text/html; #ファイルで使用されるデフォルトの MIME タイプを設定します
charset UTF-8; #ヘッダー ファイルにデフォルトの文字セットを設定します
gzip on; # nginx に gzip 圧縮でデータを送信するよう指示します。これにより、送信するデータの量が削減されます
gzip_disable "msie6"; # 指定されたクライアントの gzip 機能を無効にします。ソリューションに広く互換性を持たせるために、IE6 以下に設定します
# gzip_static on; #圧縮する前に gzip 処理済みのリソースを探すように nginx に指示します
#これにより、ファイルを事前に圧縮する必要があります。最高の圧縮率により、nginx はこれらのファイルを圧縮する必要がなくなります。 #gzip_proxied any; #リクエストとレスポンスに基づいて、レスポンス ストリームの圧縮を許可または無効にします。これを any に設定します。これは、すべてのリクエストが圧縮されることを意味します。
gzip_min_length 1000; #データの圧縮を有効にする最小バイト数を設定します。リクエストが 1000 バイト未満の場合は、
#これらの小さなデータを圧縮すると、このリクエストを処理するすべてのプロセスの速度が低下するため、圧縮しない方が良いです
gzip_comp_level 4; #データの圧縮レベルを設定します。このレベルには 1 ~ 9 の任意の値を指定できます。9 が最も遅くなりますが、圧縮率は最も高くなります。
#より妥協的な設定である 4 に設定しました
gzip_buffers 16 8k;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript ; #圧縮する必要があるデータ形式を設定します
open_file_cache max=100000 inactive=20s; #キャッシュを開くときに、最大キャッシュ数とキャッシュ時間も指定します。
#20 秒以上非アクティブになった後にクリアできるように、比較的長い最大時間を設定できます
open_file_cache_valid 30s; #open_file_cache で正しい情報を検出する間隔を指定します
open_file_cache_min_uses 2; #open_file_cache の命令を定義しますパラメータの非アクティブ期間中のファイルの最小数
open_file_cache_errors on;
include /etc/nginx/sites-enabled/*;
}
以上、nginx の高パフォーマンス設定について内容も含めて詳しくご紹介しましたが、PHP チュートリアルに興味のある方の参考になれば幸いです。