【nginx】ディレクティブ一覧


## はじめに

nginxを全く触ったことがなく、設定ファイルの内容がわからなかったので整理しました。

## 公式ドキュメント

http://nginx.org/en/docs/

## 基本知識

基本知識は下記ページがまとまっていて読みやすかったです。

https://heartbeats.jp/hbblog/tech/nginx/index_3.html


## ディレクティブ

## Core functionality
|directive|about|reference|
----|---- |---- 
|[error_log](http://nginx.org/en/docs/ngx_core_module.html#error_log)|エラーログの出力先、出力するエラーのレベル|[3.2 基本的な設定](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node19.html)|
|[events](http://nginx.org/en/docs/ngx_core_module.html#events)|イベント処理に関するモジュール|[nginx連載3回目: nginxの設定、その1](https://heartbeats.jp/hbblog/2012/02/nginx03.html)|
|[include](http://nginx.org/en/docs/ngx_core_module.html#include)|読み込む設定ファイル|[nginx連載3回目: nginxの設定、その1](https://heartbeats.jp/hbblog/2012/02/nginx03.html)|
|[multi_accept](http://nginx.org/en/docs/ngx_core_module.html#multi_accept)|一度に複数の接続を受け入れるかどうか|[【Nginx】multi_acceptを有効化すると何が変わるのかをソースも一緒に追ってみた](https://ryuichi1208.hateblo.jp/entry/2022/01/09/112908)|
|[pid](http://nginx.org/en/docs/ngx_core_module.html#pid)|メインプロセスのプロセスIDが書き込まれるpidファイル|[Nginx　pidとは何か](https://qiita.com/keitean/items/cfb27f496aa42a07c2e7)|
|[user](http://nginx.org/en/docs/ngx_core_module.html#user)|nginxのworkerプロセスの実行権限のユーザ|[nginx連載3回目: nginxの設定、その1](https://heartbeats.jp/hbblog/2012/02/nginx03.html)|
|[worker_connections](http://nginx.org/en/docs/ngx_core_module.html#worker_connections)|workerプロセスで開ける同時接続最大数|[nginxのチューニング方法　パフォーマンスを最適化](https://log.dot-co.co.jp/nginx-perfomance/)|
|[worker_processes](http://nginx.org/en/docs/ngx_core_module.html#worker_processes)|workerプロセス数|[nginxの基本設定を改めてちゃんと調べてみた](https://qiita.com/hclo/items/35f00b266506a707447e)|
|[worker_rlimit_nofile](http://nginx.org/en/docs/ngx_core_module.html#worker_rlimit_nofile)|Nginxのworker_connectionsの1workerプロセスにおけるファイルディスクリプタの上限値|[[Nginx]worker_connectionsとworker_rlimit_nofileの値は何がいいのか？](https://qiita.com/mikene_koko/items/85fbe6a342f89bf53e89)|



## ngx_http_core_module
|directive|about|reference|
----|---- |---- 
|[default_type](http://nginx.org/en/docs/http/ngx_http_core_module.html#default_type)|レスポンスのデフォルトのMIMEタイプ|[nginx連載3回目: nginxの設定、その1](https://heartbeats.jp/hbblog/2012/02/nginx03.html)|
|[error_page](http://nginx.org/en/docs/http/ngx_http_core_module.html#error_page)|エラーページ|[Nginxのエラーページをカスタマイズする方法](https://qiita.com/ryounagaoka/items/fd641e39a196b47db875)|
|[keepalive_timeout](http://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout)|HTTP通信をタイムアウトせずに待つ秒数|[Nginx のKeep-aliveの設定](https://ex1.m-yabe.com/archives/4305)|
|[limit_except](http://nginx.org/en/docs/http/ngx_http_core_module.html#limit_except)|許可するHTTPメソッド|[Nginxでメソッド制限](https://qiita.com/hiroki_ok/items/b8d29582c4381c26d3ba)|
|[listen](http://nginx.org/en/docs/http/ngx_http_core_module.html#listen)|リクエストを受け付けるIPアドレスやポート番号、UNIXドメインソケット|[nginx連載4回目: nginxの設定、その2 - バーチャルサーバの設定](https://heartbeats.jp/hbblog/2012/04/nginx04.html)|
|[location](http://nginx.org/en/docs/http/ngx_http_core_module.html#location)|URIのパス毎の設定|[nginx連載5回目: nginxの設定、その3 - locationディレクティブ](https://heartbeats.jp/hbblog/2012/04/nginx05.html)|
|[root](http://nginx.org/en/docs/http/ngx_http_core_module.html#root)|ドキュメントのルートディレクトリ|[Nginx　rootディレクティブ](https://qiita.com/keitean/items/56520e0c3e2015f19133)|
|[sendfile](http://nginx.org/en/docs/http/ngx_http_core_module.html#sendfile)|クライアントへのレスポンス処理をsendfileシステムコールというAPIを使って行うかどうか|[開発サーバーでもこれだけはやっておくnginxの設定](https://qiita.com/yuse/items/fe05cec1a331306eac19)|
|[server_name](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_name)|サーバー名|[nginxのserver_nameはちゃんと設定したほうがいいね。というお話](https://umisora2.hatenablog.com/entry/2018/12/13/164908)|
|[server_tokens](http://nginx.org/en/docs/http/ngx_http_core_module.html#server_tokens)|エラーページやレスポンスヘッダーにnginxのバージョンを表示するか|[Nginx導入時やること](https://qiita.com/kidach1/items/985efebba639713c562e)|
|[tcp_nodelay](http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nodelay)|データをキャッシュしないで送信するかどうか|[nginx最大パフォーマンスを出すための基本設定](https://gist.github.com/aliyome/d6a5e4bfb54985145b7297863c03aecb)|
|[tcp_nopush](http://nginx.org/en/docs/http/ngx_http_core_module.html#tcp_nopush)|レスポンスヘッダとファイルの内容をまとめて送るかどうか|[【Nginx】ちょっと時間を掛けてチューニングしてみた。](https://study-infra.com/nginx-tuning/)|
|[types_hash_max_size](http://nginx.org/en/docs/http/ngx_http_core_module.html#types_hash_max_size)|コンテンツ配信などの最適化に利用するハッシュテーブルのサイズ|[nginxの設定 その1](https://www.bnote.net/centos/nginx_conf01.html)|

### Embedded Variables

|directive|about|reference|
----|---- |---- 
|[body_bytes_sent](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|クライアントに転送したバイト数のうち、レスポンスヘッダのバイト数を引いたもの|[[nginx] アクセスログフォーマット](http://strix01.blogspot.com/2012/07/nginx.html)|
|[remote_addr](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|アクセス元のIP|[remote_addrとかx-forwarded-forとかx-real-ipとか](https://christina04.hatenablog.com/entry/2016/10/25/190000)|
|[remote_user](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|Basic認証で取得したユーザー名|[Basic認証で使用したユーザ名を元にリクエストを振り分ける](https://www.greptips.com/posts/1283/)|
|[request](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|完全なオリジナルのリクエスト|[3.1.2 変数、値、文字列](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node18.html)|
|[request_time](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|リクエスト処理時間(ミリ秒精度の秒)|[3.1.2 変数、値、文字列](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node18.html)|
|[status](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|レスポンスのステータス|[3.1.2 変数、値、文字列](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node18.html)|
|[time_local](http://nginx.org/en/docs/http/ngx_http_core_module.html#variables)|アクセスに対してレスポンスを返した日時|[nginxの$time_localで出力される日時のタイミングはいつなのか](https://tech.excite.co.jp/entry/2021/06/21/180704)|



## ngx_http_headers_module
|directive|about|reference|
----|---- |---- 
|[add_header](http://nginx.org/en/docs/http/ngx_http_headers_module.html#add_header)|httpレスポンスにヘッダーを追加|[add_headerを使ってnginxをデバッグする](https://qiita.com/paranishian/items/87cb3db877463db7c3c4)|



## ngx_http_index_module
|directive|about|reference|
----|---- |---- 
|[index](http://nginx.org/en/docs/http/ngx_http_index_module.html#index)|indexファイル(パス"/"にアクセスした時のファイル)|[nginx indexディレクティブ](https://qiita.com/Syy12345-Unity/items/7232b9295f4e5432423f)|



## ngx_http_limit_req_module
|directive|about|reference|
----|---- |---- 
|[limit_req](http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req)|limit_req_zoneにて定義した制限を適用|[Nginxでのアクセス流量制御を検証してみた](https://qiita.com/niisan-tokyo/items/f7176fb0d4d3cff64f2c)|
|[limit_req_log_level](http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_log_level)|ログレベル|[]()|
|[limit_req_status](http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_status)|拒否されたリクエストに返されるhttpステータスコード|[NGINX で接続 (リクエスト) のレートを制限する方法](https://ja.linux-console.net/?p=2651#gsc.tab=0)|
|[limit_req_zone](http://nginx.org/en/docs/http/ngx_http_limit_req_module.html#limit_req_zone)|同一IPアドレスからのリクエスト制限の設定|[【Nginx】DoS対策_limit_req_zone](https://scble.net/2021/02/17/nginx-dos-limit-req/)|



## ngx_http_log_module
|directive|about|reference|
----|---- |---- 
|[access_log](http://nginx.org/en/docs/http/ngx_http_log_module.html#access_log)|アクセスログの出力先|[3.2 基本的な設定](http://www2.matsue-ct.ac.jp/home/kanayama/text/nginx/node19.html)|
|[log_format](http://nginx.org/en/docs/http/ngx_http_log_module.html#log_format)|アクセスログにログを出力する際に使用するフォーマット|[Nginx - ログフォーマット、アクセスログについて！](https://www.mk-mode.com/blog/2013/01/16/nginx-access-log/)|



## ngx_http_map_module
|directive|about|reference|
----|---- |---- 
|[map](http://nginx.org/en/docs/http/ngx_http_map_module.html#map)|送信元IPアドレス、振り分け先となるサーバー情報|[NGINX：送信元IPアドレスでサーバーを振り分けてみる](https://cn.teldevice.co.jp/blog/p38813/)|



## ngx_http_proxy_module
|directive|about|reference|
----|---- |---- 
|[proxy_pass](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass)|プロキシのパス|[nginxのproxy_passでハマった](https://qiita.com/master-of-sugar/items/6dc7c03a1f600c1ec24a)|
|[proxy_connect_timeout](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_connect_timeout)|nginxから後続へのコネクションを張るタイムアウト時間|[Nginx リバースプロキシ基本設定](https://qiita.com/noblin_1031/items/ba7ef5dd06b1519deb5e)|
|[proxy_http_version](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_http_version)|プロキシに使用するHTTPプロトコルのバージョン|[nginxのproxy_http_versionのデフォルト値が1.0](https://qiita.com/smallpalace/items/26bdf6fcff64ce0b9be6)|
|[proxy_read_timeout](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout)|レスポンスを返すタイムアウト値|[Nginx リバースプロキシ基本設定](https://qiita.com/noblin_1031/items/ba7ef5dd06b1519deb5e)|
|[proxy_send_timeout](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_send_timeout)|nginxから後続に対してデータ送信する際のタイムアウト値|[Nginx リバースプロキシ基本設定](https://qiita.com/noblin_1031/items/ba7ef5dd06b1519deb5e)|
|[proxy_set_header](http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_set_header)|転送先に追加・再定義するアクセス元のIPやホスト情報|[Nginx リバースプロキシ基本設定](https://qiita.com/noblin_1031/items/ba7ef5dd06b1519deb5e)|



## ngx_http_realip_module
|directive|about|reference|
----|---- |---- 
|[set_real_ip_from](http://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from)|アクセス元IPアドレス|[nginxで複数のproxyを経由する場合でもアクセス元IPアドレスを取得する](https://qiita.com/tjun/items/f6e68924cf6bb616e4ec)|
|[real_ip_header](http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header)|アクセス元IPアドレスの置換に使用するHTTPヘッダーフィールド|[remote_addrとかx-forwarded-forとかx-real-ipとか](https://christina04.hatenablog.com/entry/2016/10/25/190000)|
|[real_ip_recursive](http://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive)|IPアドレスを繰り返し置換するか|[nginxで複数のproxyを経由する場合でもアクセス元IPアドレスを取得する](https://qiita.com/tjun/items/f6e68924cf6bb616e4ec)|



## ngx_http_rewrite_module
|directive|about|reference|
----|---- |---- 
|[return](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return)|クライアントに返すcode、URL|[Nginx　returnディレクティブ](https://qiita.com/keitean/items/a973b70fe2896926c836)|
|[rewrite](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite)|リダイレクトするURL|[nginxのrewriteを使ったリダイレクト](https://www.skyarch.net/blog/nginx%E3%81%AErewrite%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83%88/)|
|[set](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#set)|変数の定義|[set,ifディレクティブ,変数に関して](https://skill-up-engineering.com/2016/12/12/post-2228/)|



## ngx_http_ssl_module
|directive|about|reference|
----|---- |---- 
|[ssl_certificate](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate)|サーバー証明書のファイルパス|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_certificate_key](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_certificate_key)|秘密鍵のファイルパス|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_ciphers](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_ciphers)|SSLで使用する暗号スイート|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_dhparam](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_dhparam)|Diffie-Helmanの鍵交換アルゴリズムで使われる素数を格納しているファイル|[nginx : ssl_dhparamの有り無しでの挙動の違い](https://qiita.com/r-ytakada/items/7ac9ce32c1ed4d01d505)|
|[ssl_prefer_server_ciphers](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_prefer_server_ciphers)|利用する暗号を選ぶ際に優先するSSLv3やTLSではサーバが示した暗号スイート|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_protocols](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_protocols)|SSLのバージョン|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_session_cache](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_cache)|SSLセッションキャッシュをどのように扱うかとそのキャッシュサイズ|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|
|[ssl_session_timeout](http://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_session_timeout)|SSLセッションキャッシュに保管するSSLセッションの情報のタイムアウト時間|[nginx連載6回目: nginxの設定、その4 - TLS/SSLの設定](https://heartbeats.jp/hbblog/2012/06/nginx06.html)|



## ngx_http_upstream_module
|directive|about|reference|
----|---- |---- 
|[keepalive](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive)|有効にするコネクション数|[NginxのKeepAlive設定と考え方まとめ（Timeout･upstream等 ）](https://doudonn.com/saba/2365/)|
|[server](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server)|バーチャルホストの設定|[Nginxの設定で押さえておきたいポイント](https://www.wakuwakubank.com/posts/611-web-server-nginx/)|
|[upstream](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream)|上流サーバーのグループ|[【nginx】設定の基本、リバースプロキシの設定](http://www.code-magagine.com/?p=8983)|

### Embedded Variables

|directive|about|reference|
----|---- |---- 
|[upstream_addr](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables)|上流サーバーのIPアドレス|[]()|
|[upstream_response_time](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables)|上流サーバーからレスポンスを受信するまでの時間|[]()|
|[upstream_status](http://nginx.org/en/docs/http/ngx_http_upstream_module.html#variables)|上流サーバーから受信したレスポンスのHTTPステータスコード|[]()|


## その他参考

https://qiita.com/hideji2/items/1421f9bff2a97a5e5794