「NginX- serverコンテキスト」の版間の差分
(→概要) |
編集の要約なし |
||
26行目: | 26行目: | ||
== listenディレクティブ == | == listenディレクティブ == | ||
IPアドレスとポート番号を指定する。<br> | |||
複数指定することもできる。<br> | |||
<br> | |||
IPv4 / IPv6、ポート、UNIXドメインソケットをサポートしている。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
server { | server { | ||
listen 80; | listen 80; | ||
listen 443 ssl; | |||
listen [::]:80; | |||
# ...略 | # ...略 | ||
37行目: | 43行目: | ||
== server_nameディレクティブ == | == server_nameディレクティブ == | ||
サーバ名 (バーチャルホストの識別も可) を指定する。<br> | |||
<br> | |||
完全修飾ドメイン名、ワイルドカード、正規表現をサポートしている。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
server { | server { | ||
43行目: | 52行目: | ||
server_name example.com; | server_name example.com; | ||
# 正規表現で記述する場合 | |||
# 例: server_name *.example.com ~^www\d+\.example\.com$; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
49行目: | 61行目: | ||
== rootディレクティブ == | == rootディレクティブ == | ||
ドキュメントルートを指定する。<br> | ドキュメントルートを指定する。<br> | ||
これは、全てのリクエストに対する相対パスの基準点となる。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
server { | server { | ||
58行目: | 72行目: | ||
<br><br> | <br><br> | ||
== | == indexディレクティブ == | ||
デフォルトページを指定する。<br> | |||
指定順に検索され、最初に見つかったファイルが使用される。<br> | |||
<br> | |||
これは、locationコンテキストでも設定することができる。<br> | |||
<br> | <br> | ||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
# | server { | ||
# ...略 | |||
index index.php index.html; | |||
index index.html; | |||
} | } | ||
</syntaxhighlight> | |||
<br><br> | |||
== アクセス制御 == | |||
==== 許可 ==== | |||
特定のIPアドレス / 範囲からのアクセスを許可する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
allow 10.0.0.0/8; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== 拒否 ==== | ||
特定のIPアドレス / 範囲からのアクセスを禁止する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
deny 192.168.1.0/24; | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== ファイルアップロード等の制限 ==== | |||
クライアントリクエストボディの最大サイズを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_max_body_size 10M; # 最大10[MB]に制限する場合 | |||
</syntaxhighlight> | |||
<br><br> | |||
== ログ設定 == | |||
==== アクセスログの保存先とフォーマットの指定 ==== | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
access_log /var/log/nginx/access.log main; | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== エラーログの保存先とログレベルの指定 ==== | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
error_log /var/log/nginx/error.log warn; | |||
</syntaxhighlight> | |||
<br><br> | |||
== タイムアウト関連 == | |||
==== client_body_timeoutディレクティブ ==== | |||
リクエストボディ受信のタイムアウトを指定する。<br> | |||
これは、クライアントからのデータ受信間隔を制限する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_body_timeout 60s; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== client_header_timeoutディレクティブ ==== | |||
リクエストヘッダ受信のタイムアウトを指定する。<br> | |||
これは、ヘッダ受信の制限時間のことである。<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
client_header_timeout 60s; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== keepalive_timeoutディレクティブ ==== | |||
Keep-Alive接続のタイムアウトを指定する。<br> | |||
これは、持続的接続の維持時間のことである。<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
keepalive_timeout 75s; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== send_timeoutディレクティブ ==== | ||
レスポンス送信のタイムアウトを指定する。<br> | |||
これは、クライアントへの送信処理のタイムアウトのことである。<br> | |||
<syntaxhighlight lang="nginx"> | |||
send_timeout 60s; | |||
</syntaxhighlight> | |||
<br><br> | |||
== バッファ設定 == | |||
==== client_body_buffer_sizeディレクティブ ==== | |||
リクエストボディのバッファサイズを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_body_buffer_size 128k; | |||
</syntaxhighlight> | |||
<br> | <br> | ||
==== client_header_buffer_sizeディレクティブ ==== | |||
リクエストヘッダのバッファサイズを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
client_header_buffer_size 1k; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== large_client_header_buffersディレクティブ ==== | ||
大きなヘッダ用のバッファを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
large_client_header_buffers 4 8k; | |||
</syntaxhighlight> | |||
<br><br> | |||
== SSL / TLS設定ディレクティブ == | |||
==== ssl_certificateディレクティブ ==== | |||
SSL証明書ファイルのパスを指定する。<br> | |||
ssl_certificate /path/cert.pem; | |||
<br> | <br> | ||
==== ssl_certificate_keyディレクティブ ==== | |||
秘密鍵ファイルのパスを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
ssl_certificate_key /path/key.pem; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== ssl_protocolsディレクティブ ==== | ||
使用するSSL / TLSプロトコルを指定する。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
ssl_protocols TLSv1.2 TLSv1.3; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== ssl_ciphersディレクティブ ==== | ||
暗号化スイートを指定する。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
ssl_ciphers HIGH:!aNULL:!MD5; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== ssl_session_timeoutディレクティブ ==== | ||
SSLセッションのタイムアウトを指定する。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
ssl_session_timeout 1d; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
==== | ==== ssl_session_cacheディレクティブ ==== | ||
SSLセッションキャッシュを設定する。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | <syntaxhighlight lang="nginx"> | ||
ssl_session_cache shared:SSL:50m; | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
2024年11月30日 (土) 02:38時点における版
概要
serverコンテキストは、仮想サーバを定義するための基本的な構成要素である。
このコンテキストは、常にhttpコンテキスト内に配置され、1つのNginXサーバーで複数の仮想ホストを運用することを可能にする。
主要な機能として、特定のIPアドレスやポートでのリクエスト待ち受け、ドメイン名の設定、SSLの設定、静的ファイルの配信設定、プロキシ設定等がある。
serverディレクティブの用途を以下に示す。
- ポート番号の指定 (listen)
- サーバ名の設定 (server_name)
- ドキュメントルートの指定 (root)
- SSL / TLS設定
- ロケーション設定
- リダイレクト設定
また、バーチャルホスティングにおいても、同一サーバ上で異なるドメインのWebサイトを運用することができる。
設定の継承関係について、serverコンテキスト内の設定は、より上位のhttpコンテキストからデフォルト値を継承する。
さらに、serverコンテキスト内のlocationコンテキストは、serverコンテキストの設定を継承する。
これにより、効率的で柔軟な設定管理が可能になる。
セキュリティにおいては、SSL / TLS証明書の設定、アクセス制限、リダイレクトルールの設定等が可能であり、安全なWebサービスの提供に貢献する。
また、エラーページのカスタマイズやログの設定も行うことができる。
パフォーマンスの最適化では、キャッシュ設定、バッファサイズの調整、接続数の制限等を設定することができるため、リソース管理が可能である。
listenディレクティブ
IPアドレスとポート番号を指定する。
複数指定することもできる。
IPv4 / IPv6、ポート、UNIXドメインソケットをサポートしている。
server {
listen 80;
listen 443 ssl;
listen [::]:80;
# ...略
}
server_nameディレクティブ
サーバ名 (バーチャルホストの識別も可) を指定する。
完全修飾ドメイン名、ワイルドカード、正規表現をサポートしている。
server {
# ...略
server_name example.com;
# 正規表現で記述する場合
# 例: server_name *.example.com ~^www\d+\.example\.com$;
}
rootディレクティブ
ドキュメントルートを指定する。
これは、全てのリクエストに対する相対パスの基準点となる。
server {
# ...略
root /var/www/html;
}
indexディレクティブ
デフォルトページを指定する。
指定順に検索され、最初に見つかったファイルが使用される。
これは、locationコンテキストでも設定することができる。
server {
# ...略
index index.php index.html;
}
アクセス制御
許可
特定のIPアドレス / 範囲からのアクセスを許可する。
allow 10.0.0.0/8;
拒否
特定のIPアドレス / 範囲からのアクセスを禁止する。
deny 192.168.1.0/24;
ファイルアップロード等の制限
クライアントリクエストボディの最大サイズを指定する。
client_max_body_size 10M; # 最大10[MB]に制限する場合
ログ設定
アクセスログの保存先とフォーマットの指定
access_log /var/log/nginx/access.log main;
エラーログの保存先とログレベルの指定
error_log /var/log/nginx/error.log warn;
タイムアウト関連
client_body_timeoutディレクティブ
リクエストボディ受信のタイムアウトを指定する。
これは、クライアントからのデータ受信間隔を制限する。
client_body_timeout 60s;
client_header_timeoutディレクティブ
リクエストヘッダ受信のタイムアウトを指定する。
これは、ヘッダ受信の制限時間のことである。
client_header_timeout 60s;
keepalive_timeoutディレクティブ
Keep-Alive接続のタイムアウトを指定する。
これは、持続的接続の維持時間のことである。
keepalive_timeout 75s;
send_timeoutディレクティブ
レスポンス送信のタイムアウトを指定する。
これは、クライアントへの送信処理のタイムアウトのことである。
send_timeout 60s;
バッファ設定
client_body_buffer_sizeディレクティブ
リクエストボディのバッファサイズを指定する。
client_body_buffer_size 128k;
client_header_buffer_sizeディレクティブ
リクエストヘッダのバッファサイズを指定する。
client_header_buffer_size 1k;
large_client_header_buffersディレクティブ
大きなヘッダ用のバッファを指定する。
large_client_header_buffers 4 8k;
SSL / TLS設定ディレクティブ
ssl_certificateディレクティブ
SSL証明書ファイルのパスを指定する。
ssl_certificate /path/cert.pem;
ssl_certificate_keyディレクティブ
秘密鍵ファイルのパスを指定する。
ssl_certificate_key /path/key.pem;
ssl_protocolsディレクティブ
使用するSSL / TLSプロトコルを指定する。
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphersディレクティブ
暗号化スイートを指定する。
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_session_timeoutディレクティブ
SSLセッションのタイムアウトを指定する。
ssl_session_timeout 1d;
ssl_session_cacheディレクティブ
SSLセッションキャッシュを設定する。
ssl_session_cache shared:SSL:50m;