nginx.confの初期設定で気をつけたいこと
権限の設定
- ワーカープロセスを指定のUserの元で起動するようにする
以下の設定は全ての権限を付与しているためセキュリティ上危険
- ☓
user root root;
- ☓
nginxというUserとgroupを事前につくり設定して上げるほうが良い
- ◯
user nginx nginx;
- ◯
ワーカープロセス数の設定
デフォルトの
worker_processes 1;
はワーカプロセスが1つしか起動しないつまりCPUのコアのうち1つしか使っていないことになる
- CPUのコアごとに1プロセス以上の値にするほうが幸せになれる
(例)
worker_processes 4;
ここは使うマシンのスペックと要相談
ワーカプロセスの優先度の設定
- デフォルトの設定では通常の優先度で実行される
- ケースバイケースではあるが高い優先度を割り当てたい時がある
- その場合は設定値を小さくしていくと優先度が高くなる
- 最低は19最高は-20で優先度を設定できる
- (例)
worker_priority 0;
- ※ カーネルプロセスのデフォルト優先度が-5のためこれより小さくしないこと
log_not_foundの設定
- 404エラーのログ取得やリソースについての情報を提供してくれてる
- しかし殆どの場合はbotやwebブラウザがfavicon.icoにアクセスして生成される
- 結果実際にみたいログファイルの中が読みにくくなるので無効が推奨
- (例)
log_not_found off
- ※しかしこのディレクティブはHTTP Coreモジュールの一部なのでサーバレベルでは無効にしてはいけない
worker_connectionsの設定
- ワーカプロセス数と組み合わせるとサーバが同時に受け付ける接続数が変わる
- ワーカプロセス数*worker_connection = 合計接続数
- (例)
worker_connection 1024
- よってマシンのスペックに合わせてここも要相談
おもったこと
- マシンのスペックとサービスの規模で必要な設定が変わるため最初から完璧な設定はできない気がする
- ある程度どれくらいの規模にするのかを想定して設定する必要がある
- 以上のことを踏まえて設定は運用しながら柔軟に変更するほうがよいとおもった