本章では、前頁の参考ドキュメントに記載したnginx-modules-reference.pdfファイルの「1.1 Core functionality」節をベースに記載します。
「1.1 Core functionality」に定義された基本ディレクティブのworker_関係以外は以下になります。
user
user [group];workerプロセスのユーザーとグループは以下の状況で確定します。
私の環境は、Ubnutu16.04LTSにapt-getでnginx1.12.0をインストールしました。
apt-getインストール時には、--user=nginx及び--group=nginxがデフォルトで指定されているで注意が必要です。
userディレクティブは必須項目ではありませんが、以下のように明示することが運用し易い設定でしょう。
nginx.conf抜粋
#userName groupName
user nginx nginx;
error_log
file [level];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
file ;プロセスIDを格納するファイルは以下の評価順で出力先が確定されます。
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
変数[=値] ;ngx_http_perl_moduleモジュールの例
env MALLOC_OPTIONS;
env PERL5LIB=/data/site/modules;
env OPENSSL_ALLOW_PROXY_CERTS=1;
events{ ・・・ }
eventコンテキストは、eventコンテキスト内のディレクティブが未指定(各種値はデフォルト値)でも必ず指定する必要があります。
nginx.conf内ではeventsコンテキストは必須の例
events {
}
上記のように設定するとworker_connectionsディレクティブはデフォルト値512が利用されます。
include
file | mask ; 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
file; nginx.conf内のload_module例
load_module modules/ngx_mail_module.so;
lock_file
file; master_process
on | off; pcre_jit
on | off; 説明にあるようにURLの振り分けを行うlocationディレクティブでURLの正規表現が多々利用されます。
nginxをソースからコンパイル前にPCREライブラリをLinuxにインストールし、--with-pcre=と--with-pcre-jitを有効にします。
ssl_engine
device; thread_pool
name threads=number [max_queue=number]; nginxのスレッドプールに関しては、原文https://www.nginx.com/blog/thread-pools-boost-performance-9x/をご参照下さい。
スレッドプールのイメージとして、concurrentパッケージもご参考下さい。
他のworkerプロセスのディレクティブと合わせて負荷試験により、パラメータを調整して下さい。
timer_resolution
間隔; nginx.conf内のtimer_resolution例
timer_resolution 100ms;
use
method; accept_mutex
on | off; accept_mutex_delay
time; multi_accept
on | off; daemon
on | off; debug_connection
address | CIDR | unix:; 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
abort | stop;