📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
ページの作成:「== 概要 == serverコンテキストは、仮想サーバを定義するための基本的な構成要素である。<br> このコンテキストは、常にhttpコンテキスト内に配置され、1つのNginXサーバーで複数の仮想ホストを運用することを可能にする。<br> <br> 主要な機能として、特定のIPアドレスやポートでのリクエスト待ち受け、ドメイン名の設定、SSLの設定、静的ファイルの配…」 |
|||
| (同じ利用者による、間の4版が非表示) | |||
| 25行目: | 25行目: | ||
<br><br> | <br><br> | ||
== | == listenディレクティブ == | ||
IPアドレスとポート番号を指定する。<br> | |||
複数指定することもできる。<br> | |||
<br> | <br> | ||
IPv4 / IPv6、ポート、UNIXドメインソケットをサポートしている。<br> | |||
<br> | <br> | ||
< | <syntaxhighlight lang="nginx"> | ||
server { | |||
listen 80; | |||
listen 443 ssl; | |||
listen [::]:80; | |||
# ...略 | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== server_nameディレクティブ == | |||
サーバ名 (バーチャルホストの識別も可) を指定する。<br> | |||
<br> | <br> | ||
* | 完全修飾ドメイン名、ワイルドカード、正規表現をサポートしている。<br> | ||
<br> | |||
<syntaxhighlight lang="nginx"> | |||
server { | |||
# ...略 | |||
server_name example.com; | |||
# 正規表現で記述する場合 | |||
# 例: server_name *.example.com ~^www\d+\.example\.com$; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== rootディレクティブ == | |||
ドキュメントルートを指定する。<br> | |||
これは、全てのリクエストに対する相対パスの基準点となる。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | |||
server { | |||
# ...略 | |||
root /var/www/html; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== indexディレクティブ == | |||
デフォルトページを指定する。<br> | |||
指定順に検索され、最初に見つかったファイルが使用される。<br> | |||
<br> | |||
これは、locationコンテキストでも設定することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | |||
server { | |||
# ...略 | |||
index index.php index.html; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== アクセス制御 == | |||
==== 許可 ==== | |||
特定のIPアドレス / 範囲からのアクセスを許可する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
allow 10.0.0.0/8; | |||
</syntaxhighlight> | |||
<br> | |||
==== 拒否 ==== | |||
特定のIPアドレス / 範囲からのアクセスを禁止する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
deny 192.168.1.0/24; | |||
</syntaxhighlight> | |||
<br> | |||
==== ファイルアップロード等の制限 ==== | |||
クライアントリクエストボディの最大サイズを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_max_body_size 10M; # 最大10[MB]に制限する場合 | |||
</syntaxhighlight> | |||
<br><br> | |||
== ログ設定 == | |||
サーバ固有のログフォーマットを指定する。<br> | |||
serverコンテキストで設定することにより、特定の仮想ホストにのみ異なるログフォーマットを使用することができる。<br> | |||
<br> | |||
<syntaxhighlight lang="nginx"> | |||
# 以下の例では、custom_formatという名前のフォーマットを定義している | |||
# 一般的なアクセスログの形式を定義しており、IPアドレス、時刻、リクエスト内容、ステータスコード、ユーザエージェント等の情報を記録している | |||
server { | |||
log_format custom_format '$remote_addr - [$time_local] ' | |||
'"$request" $status $body_bytes_sent ' | |||
'"$http_referer" "$http_user_agent"'; | |||
access_log /var/log/nginx/custom_access.log custom_format; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
これは、httpコンテキストでも定義することが可能である。<br> | |||
その場合は、NginX全体の設定となる。(serverコンテキストで上書き可能)<br> | |||
<syntaxhighlight lang="nginx"> | |||
http { | |||
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' | |||
'$status $body_bytes_sent "$http_referer" ' | |||
'"$http_user_agent"'; | |||
access_log /var/log/nginx/access.log main; | |||
} | |||
</syntaxhighlight> | |||
<br> | |||
==== アクセスログの保存先とフォーマットの指定 ==== | |||
<syntaxhighlight lang="nginx"> | |||
access_log /var/log/nginx/access.log main; | |||
</syntaxhighlight> | |||
<br> | |||
==== エラーログの保存先とログレベルの指定 ==== | |||
<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> | |||
<br> | |||
==== client_header_timeoutディレクティブ ==== | |||
リクエストヘッダ受信のタイムアウトを指定する。<br> | |||
これは、ヘッダ受信の制限時間のことである。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_header_timeout 60s; | |||
</syntaxhighlight> | |||
<br> | |||
==== keepalive_timeoutディレクティブ ==== | |||
Keep-Alive接続のタイムアウトを指定する。<br> | |||
これは、持続的接続の維持時間のことである。<br> | |||
<syntaxhighlight lang="nginx"> | |||
keepalive_timeout 75s; | |||
</syntaxhighlight> | |||
<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> | |||
==== client_header_buffer_sizeディレクティブ ==== | |||
リクエストヘッダのバッファサイズを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
client_header_buffer_size 1k; | |||
</syntaxhighlight> | |||
<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> | |||
==== ssl_certificate_keyディレクティブ ==== | |||
秘密鍵ファイルのパスを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
ssl_certificate_key /path/key.pem; | |||
</syntaxhighlight> | |||
<br> | |||
==== ssl_protocolsディレクティブ ==== | |||
使用するSSL / TLSプロトコルを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
ssl_protocols TLSv1.2 TLSv1.3; | |||
</syntaxhighlight> | |||
<br> | |||
==== ssl_ciphersディレクティブ ==== | |||
暗号化スイートを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
ssl_ciphers HIGH:!aNULL:!MD5; | |||
</syntaxhighlight> | |||
<br> | |||
==== ssl_session_timeoutディレクティブ ==== | |||
SSLセッションのタイムアウトを指定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
ssl_session_timeout 1d; | |||
</syntaxhighlight> | |||
<br> | |||
==== ssl_session_cacheディレクティブ ==== | |||
SSLセッションキャッシュを設定する。<br> | |||
<syntaxhighlight lang="nginx"> | |||
ssl_session_cache shared:SSL:50m; | |||
</syntaxhighlight> | |||
<br><br> | <br><br> | ||