今回は、前回に引き続きnginxの設定を見ていきます。 この記事ではサーバのふるまいを定義するhttpコンテキストの設定についてまとめます。

httpコンテキストの中のupstream/server/location各ブロックについては、次の記事で説明する予定です。

目次

httpコンテキスト

include mime.types

MIMEタイプと拡張子の関連づけを定義したファイルを読み込みます。

default_type

mime.typesで拡張子からMIMEタイプを見つけられなかった場合、ここで設定したタイプが適用されます。

server_tokens

エラーページのフッタにnginxのバージョンを表示するかどうかを設定します。 セキュリティ上offが好ましいでしょう。

sendfile

ファイルの読み込みとレスポンスにsendfile()APIを使います。 sendfile()はカーネル内で処理を行なうため高速です。

tcp_nopush

HTTPレスポンスヘッダをひとつのTCPパケットで送ります。 sendfileディレクィブをonにする必要があります。

gzip

HTTPレスポンス全体をGzipで圧縮します。

gzip_comp_level

Gzipの圧縮レベルを設定します。 1-9を設定できますが、大きすぎるとCPUへの負荷も増えます。

gzip_disable

User-Agent内に指定した文字列があればGzipを無効にします。 慣例的にIEなどGzipに対応していないブラウザを無効にします。

gzip_http_version

Gzipを有効にするHTTPプロトコルのバージョンを設定します。

gzip_min_length

ここで指定した値よりも少ないレスポンスはGzip化しません。 小さいデータ量の場合は圧縮コストの方が高くなるため、一定のしきい値を設定しておきます。

gzip_proxied

圧縮するリクエストタイプを指定します。

gzip_types

ここで指定したファイルタイプが圧縮されます。 text/htmlはデフォルトで設定されているため、それ以外のタイプを設定します。

client_body_timeout

クライアントのリクエストボディの読み込みに関するタイムアウト時間を設定します。

client_header_timeout

クライアントのリクエストヘッダの読み込みに関するタイムアウト時間を設定します。

keepalive_timeout

HTTPの接続を持続する時間を設定します。 この値が長いと、コネクションを張りっぱなしになるスレッドが増えてしまいます。

send_timeout

クライアントへの送信時のタイムアウト時間を設定します。

client_body_buffer_size

リクエストのボディをここで指定したサイズまではメモリに保持、それ以外はファイルに書き出します。

client_max_body_size

クライアントからのリクエストのサイズの上限を設定します。 デフォルトは1MBと小さく、画像UP時にエラーになりやすいので、ここで調整します。

open_file_cache

ファイルディスクリプタやサイズ、更新時間などのキャッシュを有効にします。 また、キャッシュの最大数とキャッシュの有効期間を設定します。

open_file_cache_errors

ファイルのエラー情報をキャッシュします。

open_file_cache_min_uses

非アクティブファイルの最小ファイル数を設定します。

open_file_cache_valid

キャッシュの検知間隔を設定します。

ここまでの設定まとめ

以上の設定をまとめると、次のようになります。 main/eventコンテキストに関する設定は前回の記事をご覧ください。

/etc/nginx/nginx.conf:

http {
  include mime.types;
  default_type application/octet-stream;

  access_log /var/log/nginx.access.log combined;

  client_body_buffer_size 64k;
  client_max_body_size 8m;

  sendfile on;
  server_tokens off;
  tcp_nopush on;

  gzip on;
  gzip_comp_level 2;
  gzip_disable "MSIE [1-6]\.";
  gzip_http_version 1.0;
  gzip_min_length 1024;
  gzip_proxied any;
  gzip_types text/plain
             text/xml
             text/css
             text/comma-separated-values
             text/javascript
             application/x-javascript
             application/atom+xml;

  client_body_timeout 10;
  client_header_timeout 10;
  keepalive_timeout 10;
  send_timeout 10;

  open_file_cache max=1000 inactive=20s;
  open_file_cache_errors on;
  open_file_cache_min_uses 2;
  open_file_cache_valid 30s;
}

参考記事

おわりに

ここまでで、nginx全体に関する設定が完了しました。 次回はupstream/server/locationによる仮想サーバ個別の設定についてまとめていきます。