Nginx 基本設定
Nginx の読み方はエンジンエックスで Apache の C10K 問題に対応するために誕生した Web サーバー Nginx が主流になった今、 Nginx の基本構文、nginx.config の通常設定、Apache ではよく使う機能が Nginx の設定方法についてまとめました。
Nginx の特徴
- 処理性能
- 並行性
- メモリ使用量
- リバースプロキシ
- ロードバランサ
- HTTP キャッシュ
モジュール
main
Nginx 動作全般の設定 events
Events モジュールの設定(最大コネクションなど) http
HTTP_XXX モジュールの設定(Web サーバとしての設定) server
バーチャルホストの設定 location
URI に応じた設定
デフォルト設定
ディレクティブ | 説明 |
user | nginx の実行ユーザ |
worker_processes | nginx の worker プロセスの数 |
error_log | エラーログの出力先 |
pid | PID ファイルの出力先 |
worker_connections | 1 つの worker の同時に接続最大値 |
log_format | アクセスログの書式 |
access_log | アクセスログの出力先とログフォーマット |
keepalive_timeout | タイムアウト時間 |
server_tokens | nginx バージョン情報の表示 |
default_type | レスポンスのデフォルトの MIME タイプ |
charset | デフォルト文字コード |
client_max_body_size | リクエストボディの最大サイズ |
listen | IP アドレスやポート |
server_name | ホスト名 |
root | ドキュメントルート |
error_page | エラーページ |
http コンテキスト内に複数 server ディレクティブ記述することで仮想サーバーとして動作
http 内に記述できるディレクティブは、だいたい server 内にも記述できる
main プロセス制御、設定ファイル制御、ロギング
event イベント処理(パフォーマンス・チューニング
http web サーバ関連の設定
mail メール関連の設定
Web サーバ設定
BASIC 認証を設定
auth_basic で BASIC 必須の旨とメッセージを、auth_basic_user_file で.htpasswd ファイルを設定する
SSL 対応
Rewrite リダイレクト設定
server
location
if
などのコンテキストで使える rewrite ルール
書式
rewrite の `last` ってなに?
rewrite ルールの最後にある単語はリダイレクトフラグです。リダイレクトフラグ指定することで、ステータスコードを変えることができます。
リダイレクトフラグ一覧
リダイレクトフラグ | 説明 |
LAST | rewrite の実行を終了し、書き換えられた URI に対して最初から location を再検索 |
BREAK | rewrite の実行を終了 |
REDIRECT | 一時的なリダイレクト コード 302 |
PERMANENT | 恒久的なリダイレクト コード 301 |
location ブロックで last を指定すると、10 回以内に 確定すれば問題ありませんが、確定しない場合エラーとなります。
WWW ありと WWW なしに統一したい時に使える
ドメインにある www を省略するためのダイレクト
HTTP から HTTPS にリダイレクト
エイリアスを指定
ファイル一覧を表示する/しない
インストール
nginx repo 編集
nginx ブロック追加
install command
systemctl command
コア ディレクティブ 一覧
ディレクティブ | 説明 |
accept_mutex | ミューテックスを受け入れる |
accept_mutex_delay | ミューテックス遅延を受け入れる |
daemon | デーモン |
debug_connection | デバッグ接続 |
debug_points | デバッグ ポイント |
env | 環境変数 |
error_log | エラーログの出力先 |
events | イベント |
include | 引用 |
load_module | モジュール読み込み |
lock_file | ロックファイル |
master_process | マスタープロセス |
multi_accept | マルチ受け入れ |
pcre_jit | 正規表現の JIT コンパイル |
pid | ピッド |
ssl_engine | SSL エンジン |
thread_pool | スレッドプール |
timer_resolution | タイマー解像度 |
use | 使用する |
user | nginx の実行ユーザ |
worker_aio_requests | ワーカー aio リクエスト |
worker_connections | ワーカー接続 |
worker_cpu_affinity | ワーカーの CPU アフィニティ |
worker_priority | 労働者の優先順位 |
worker_processes | ワーカー プロセス |
worker_rlimit_core | ワーカー rlimit コア |
worker_rlimit_nofile | ワーカー rlimit nofile |
worker_shutdown_timeout | ワーカーのシャットダウン タイムアウト |
working_directory | 作業ディレクトリ |
accept_mutex ミューテックスを受け入れる
| |
文法 | accept_mutex on off |
デフォルト | accept_mutex off |
コンテキスト | events |
accept_mutex_delay ミューテックス遅延を受け入れる
| |
文法 | accept_mutex_delay time |
デフォルト | accept_mutex_delay 500ms |
コンテキスト | events |
daemon デーモン
| |
文法 | daemon on off |
デフォルト | daemon on |
コンテキスト | main |
debug_connection デバッグ接続
| |
文法 | debug_connection address CIDR unix |
デフォルト | — |
コンテキスト | events |
debug_points デバッグ ポイント
| |
文法 | debug_points abort stop |
デフォルト | — |
コンテキスト | main |
env 環境変数
| |
文法 | env variable[=value] |
デフォルト | env TZ |
コンテキスト | main |
error_log error log の出力場所指定
| |
文法 | error_log file [level] |
デフォルト | error_log logs/error.log error |
コンテキスト | main http mail stream server location |
events イベント
| |
文法 | events { ... } |
デフォルト | — |
コンテキスト | main |
include 引用
| |
文法 | include file mask |
デフォルト | — |
コンテキスト | any |
load_module モジュール読み込み
| |
文法 | load_module file |
デフォルト | — |
コンテキスト | main |
lock_file ロックファイル
| |
文法 | lock_file file |
デフォルト | lock_file logs/nginx.lock |
コンテキスト | main |
master_process マスタープロセス
| |
文法 | master_process on off |
デフォルト | master_process on |
コンテキスト | main |
multi_accept マルチ受け入れ
| |
文法 | multi_accept on off |
デフォルト | multi_accept off |
コンテキスト | events |
pcre_jit 正規表現の JIT コンパイル
| |
文法 | pcre_jit on off |
デフォルト | pcre_jit off |
コンテキスト | main |
pid PID 格納するファイルの出力場所の指定
| |
文法 | pid file |
デフォルト | pid logs/nginx.pid |
コンテキスト | main |
ssl_engine SSL エンジン
| |
文法 | ssl_engine device |
デフォルト | — |
コンテキスト | main |
thread_pool スレッドプール
| |
文法 | thread_pool name threads=number [max_queue=number] |
デフォルト | thread_pool default threads=32 max_queue=65536 |
コンテキスト | main |
timer_resolution タイマー解像度
| |
文法 | timer_resolution interval |
デフォルト | — |
コンテキスト | main |
use 使用する
| |
文法 | use method |
デフォルト | — |
コンテキスト | events |
user nginx の実行ユーザ
nginx を起動したときの master process 以外を起動するユーザを設定
| |
文法 | user user [group] |
デフォルト | user nobody nobody |
コンテキスト | main |
worker_aio_requests ワーカー aio リクエスト
1 つのワーカープロセスに対する未処理の非同期 I / O 操作の最大数を設定
| |
文法 | worker_aio_requests number |
デフォルト | worker_aio_requests 32 |
コンテキスト | events |
worker_connections コネクション数制限
worker_connections によりコネクション数を制限する
| |
文法 | worker_connections number |
デフォルト | worker_connections 512 |
コンテキスト | events |
worker_connections 値設定について
worker_connections の設定値が低すぎると worker_connections are not enough
エラーになる
worker_cpu_affinity ワーカーの CPU アフィニティ
| |
文法 | worker_cpu_affinity cpumask ... auto [cpumask] |
デフォルト | — |
コンテキスト | main |
worker_priority 労働者の優先順位
| |
文法 | worker_priority number |
デフォルト | worker_priority 0 |
コンテキスト | main |
worker_processes プロセス数指定
worker_processes により実行プロセス数を指定する
| |
文法 | worker_processes number auto |
デフォルト | worker_processes 1 |
コンテキスト | main |
最大 CPU のコア数まで設定、より多く設定してもパフォーマンスは上がらない
worker_rlimit_core ワーカー rlimit コア
| |
文法 | worker_rlimit_core size |
デフォルト | — |
コンテキスト | main |
worker_rlimit_nofile 最大に開けるファイル数の制限
worker プロセスが最大に開けるファイル数の制限
| |
文法 | worker_rlimit_nofile number |
デフォルト | — |
コンテキスト | main |
設定値を超える場合 too many open files
エラーになる
worker_shutdown_timeout ワーカーのシャットダウン タイムアウト
| |
文法 | worker_shutdown_timeout time |
デフォルト | — |
コンテキスト | main |
working_directory 作業ディレクトリ
| |
文法 | working_directory directory |
デフォルト | — |
コンテキスト | main |