Nginxの設定ファイルのテストとパフォーマンスを上げる設定


はじめに

はじめまして、youtuber系エンジニアのやっすんです!

今回は、パフォーマンスに関する部分を説明します!
具体的には、以下の内容です。

  • 設定ファイルの検証
  • パフォーマンスに影響を与えるディレクティブ

Youtubeでも説明しているので、作業用としてお使いください!

【YouTube動画】NGINXの設定ファイルのテスト、パフォーマンスを上げる設定

設定ファイルの検証

Nginxでは、設定ファイルの文法チェックをコマンド1つで確認できます。

$ nginx -t

文法が正しければ、次のような結果になります。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

使えるOSは限られますが、次のコマンドでも実行できます。

$ service nginx configtest

Webサイト上で確認する方法

locationの書き方は、Webサイト上で試すこともできます。
https://nginx.viraptor.info

パフォーマンスに影響を与えるディレクティブ

Nginxのパフォーマンスに影響を与える基本的なディレクティブについて紹介します。
久保達彦・道井俊介著『nginx実践入門』に他にも有益なディレクティブがあるので、ぜひ読んでみてください。

sendfile

有効にすると、ファイルの読み込み・レスポンス送信にsendfile()システムコールを使用できます。
これを使うと、ファイル送信が効率的になります。

sendfile on;

tcp_nopush

sendfileディレクティブが有効な場合、パケットサイズを最大にし、送信するパケット数を最小にできます。

tcp_nopush on;

open_file_cache

一度配信したファイル情報 (ファイルの更新日時、ディレクトリの存在有無など) を一定期間保存できるようになります。
maxでキャッシュする最大数、inactiveで保持する時間を設定できます。

open_file_cache max=1000 inactive=20s;

pcre_jit

正規表現のJITコンパイルを有効にし、正規表現の処理速度を向上させることができます。

pcre_jit on;

gzip / gzip_static

リクエストのたびにgzip圧縮する。
圧縮したコンテンツを配信することで、WEBサイトを高速にし、サーバーの負荷を減らすことができます。

gzip on;

gzipファイルが存在すれば、ブラウザが圧縮転送に対応するようにできます。

gzip_static on;

keepalive

保持するコネクション数を指定することができます。
コネクションが維持されるため、通信が高速になります。

upstream http_backend {
  ...
  keepalive 16;
}

ただ、これを使用するためには、HTTP/1.1である必要があります。

server {
  ...
  proxy_http_version 1.1;
}

まとめ

今回はNginxの設定ファイルの文法チェックのやり方、パフォーマンスに影響を与えるディレクティブを紹介しました。
ディレクティブの紹介で出てきた用語については、別途説明する予定です。

また、何か間違いや指摘がありましたら、コメントよろしくお願いします。

twitteryoutubeでのコメントもお待ちしています!