基本ディレクティブ(その他)

本章では、前頁の参考ドキュメントに記載したnginx-modules-reference.pdfファイルの「1.1 Core functionality」節をベースに記載します。

「1.1 Core functionality」に定義された基本ディレクティブのworker_関係以外は以下になります。

user

user
構文
user user [group];
デフォルト値
nobody nobody
コンテキスト
main
version
-
必須
設定推奨

workerプロセスのユーザーとグループは以下の状況で確定します。

  1. nginx.conf内でuserディレクティブを指定されている場合には、その値を利用されます。
  2. nginx.conf内でuserディレクティブを未指定、かつnginxインストール時のオプション--user=ユーザ名 --group=グループ名で指定時には、
    --user及び--groupオプションで指定されたユーザ名とグループ名が利用されます。
  3. nginx.conf内でuserディレクティブを未指定、かつnginxインストール時のオプション--user=ユーザ名 --group=グループ名を未指定時には、
    nobodyユーザ、nobodyグループが指定されます。

私の環境は、Ubnutu16.04LTSにapt-getでnginx1.12.0をインストールしました。
apt-getインストール時には、--user=nginx及び--group=nginxがデフォルトで指定されているで注意が必要です。

userディレクティブは必須項目ではありませんが、以下のように明示することが運用し易い設定でしょう。

nginx.conf抜粋
#userName groupName
user nginx nginx;
						

error_log

error_log
構文
error_logfile [level];
デフォルト値
logs/error.log error
コンテキスト
main,http,mail,stream,server,location
version
stream(1.7.11~),mail(1.9.0~)
必須
設定推奨

error_logがコンテキストmail,stream,server,locationに設定できるため
バーチャルホスト別(serverコンテキスト別)やURL別(locationコンテキスト別)にファイルを分離できるのは大変便利な機能だと思います。

/etc/nginx/sites-available/gakumon.tech抜粋(例)
server{
	listen 80 default_server;
	listen [::]:80 default_server;
	error_log /var/log/nginx/gakumon_tech_error.log error;
	server_name gakumon.tech;
}
						
/etc/nginx/sites-available/gakumon.com抜粋(例)
server{
	listen 80;
	listen [::]:80;
	
	error_log /var/log/nginx/gakumon_com_error.log error;
	server_name gakumon.com;
}
						

上記例のようにバーチャルホスト別にファイルを分割することが可能です。

ログのフォーマットは、ngx_http_log_moduleのlog_formatディレクティブで指定します。

アクセスログは、ngx_http_log_moduleのaccess_logディレクティブで指定します。

pid

pid
構文
pidfile ;
デフォルト値
nginx.pid
コンテキスト
main
version
-
必須
設定推奨

プロセスIDを格納するファイルは以下の評価順で出力先が確定されます。

  1. nginx.conf内のmainコンテキストでpidディレクティブを指定されている場合には、その値を利用されます。
  2. nginx.conf内でpidディレクティブを未指定、かつnginxインストール時のオプション--pid-path=ファイル名(フルパス)で指定時には、
    --pid-pathオプションで指定された値が利用されます。
  3. nginx.conf内でpidディレクティブを未指定、かつnginxインストール時のオプション--pid-path=ファイル名(フルパス)を未指定時には、
    デフォルトの設定値nginx.pidが利用されます。

Ubnutu16.04LTSにapt-getでnginx1.12.0をインストールした場合には、デフォルトでオプション--pid-path=/var/run/nginx.pidが指定されています。

2017/06/24追記:./cofigureオプションで--pid-path=pathを指定した場合には、nginx.confにpidディレクティブを同じ値で明示する必要があります。 理由は、nginx.confのデフォルト値 prefix/nginx.pidと./cofigureオプションで指定した値が異なるとnginxの起動エラーが起きるからです。

env

env
構文
env変数[=値] ;
デフォルト値
TZ
コンテキスト
main
version
-
必須
Perl利用時必須
ngx_http_perl_moduleモジュールの例
env MALLOC_OPTIONS; 
env PERL5LIB=/data/site/modules; 
env OPENSSL_ALLOW_PROXY_CERTS=1;
						

events

events
構文
events{ ・・・ }
デフォルト値
-
コンテキスト
main
version
-
必須

eventコンテキストは、eventコンテキスト内のディレクティブが未指定(各種値はデフォルト値)でも必ず指定する必要があります。

nginx.conf内ではeventsコンテキストは必須の例
events {
}
						

上記のように設定するとworker_connectionsディレクティブはデフォルト値512が利用されます。

include

include
構文
include file | mask ;
デフォルト値
-
コンテキスト
any
version
-
必須
設定推奨
nginx.conf内のinclude例
http {
    include       /etc/nginx/mime.types;

    #include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}
						

上記のように設定し、sites-enabledディレクトリには実体ファイルを置かず、/etc/nginx/sites-available/に保管します。
有効にするバーチャルホストのみ/etc/nginx/sites-available/のファイルに対してsites-enabledディレクトリからシンボリックリンクを設定します。

設定ファイルは、serverコンテキスト別(バーチャルホスト)別に分割することを私は強く推奨します。

load_module

load_module
構文
load_module file;
デフォルト値
-
コンテキスト
main
version
1.9.11~
必須
動的モジュール利用時のみ設定
nginx.conf内のload_module例
load_module modules/ngx_mail_module.so;
						

lock_file

lock_file
構文
lock_file file;
デフォルト値
logs/nginx.lock
コンテキスト
main
version
必須
-

master_process

master_process
構文
master_process on | off;
デフォルト値
on
コンテキスト
main
version
-
必須
nginx開発者向けのため不要

pcre_jit

pcre_jit
構文
pcre_jit on | off;
デフォルト値
off
コンテキスト
main
version
1.1.12~
必須
設定推奨

説明にあるようにURLの振り分けを行うlocationディレクティブでURLの正規表現が多々利用されます。
nginxをソースからコンパイル前にPCREライブラリをLinuxにインストールし、--with-pcre=と--with-pcre-jitを有効にします。

ssl_engine

ssl_engine
構文
ssl_engine device;
デフォルト値
-
コンテキスト
main
version
-
必須
ハードウェアSSLアクセラレータ利用時

thread_pool

thread_pool
構文
thread_pool name threads=number [max_queue=number];
デフォルト値
default threads=32 max_queue=65536
コンテキスト
main
version
1.7.11~
必須
設定推奨

nginxのスレッドプールに関しては、原文https://www.nginx.com/blog/thread-pools-boost-performance-9x/をご参照下さい。

スレッドプールのイメージとして、concurrentパッケージもご参考下さい。

他のworkerプロセスのディレクティブと合わせて負荷試験により、パラメータを調整して下さい。

timer_resolution

timer_resolution
構文
timer_resolution 間隔;
デフォルト値
-
コンテキスト
main
version
-
必須
-
nginx.conf内のtimer_resolution例
timer_resolution 100ms;
						

use

use
構文
use method;
デフォルト値
-
コンテキスト
events
version
-
必須
-

accept_mutex

accept_mutex
構文
accept_mutex on | off;
デフォルト値
off(※.version 1.11.3以前のデフォルト値は on)
コンテキスト
events
version
-
必須
-

accept_mutex_delay

accept_mutex_delay
構文
accept_mutex_delay time;
デフォルト値
500ms
コンテキスト
events
version
-
必須
-

multi_accept

multi_accept
構文
multi_accept on | off;
デフォルト値
off
コンテキスト
events
version
-
必須
-

daemon

daemon
構文
daemon on | off;
デフォルト値
off
コンテキスト
main
version
-
必須
-

debug_connection

debug_connection
構文
debug_connection address | CIDR | unix:;
デフォルト値
-
コンテキスト
events
version
-
必須
-
nginx.conf内のdebug_connection例
events { debug_connection 127.0.0.1; 
         debug_connection localhost; 
         debug_connection 192.0.2.0/24; 
         debug_connection ::1; 
         debug_connection 2001:0db8::/32; 
         debug_connection unix:; 
         ... 
         }
						

debug_points

debug_points
構文
debug_points abort | stop;
デフォルト値
-
コンテキスト
main
version
-
必須
-