本記事ではNginxの設定ファイル(nginx.conf)の書き方について解説する。
前提条件
本記事では以下の環境を前提としている。
Linux 環境 | |
OS | Debian GNU/Linux 12 (bookworm) |
ミドルウェア | nginx(1.25.5) |
Nginx.confの場所 | /etc/nginx/nginx.conf |
設定ファイル(nginx.conf)の書き方
設定ファイルの書き方には「ディレクティブ」を用いる。ディレクティブにはパラメータを単純に1つ指定するタイプ、複数指定するタイプ、ブロックディレクティブの3つの書き方がある。ブロックディレクティブの中のディレクティブのことをコンテキストと呼ぶ。
詳細については以下の公式ドキュメントを参照。
https://nginx.org/en/docs/beginners_guide.html
- 1パラメータを指定するディレクティブ例
worker_processes 1; #Nginxのワーカープロセスの数を1に指定。
- 複数パラメータ指定するディレクティブ例
error_log /var/log/nginx/error.log error; #エラーログの出力先ファイルと、ログのレベル「error」を指定。
- ブロック付きディレクティブ例
# serverブロック内に server_name と root の2つのディレクティブを指定。
server {
server_name example.com; #サーバーのホスト名としてexample.comを指定
root /var/www/html; # ドキュメントルートに/var/www/htmlを指定
}
ブロックはネストすること(入れ子にすること)ができる。
<例>
server {
listen 80;
server_name localhost;
location / {
try_files $uri $uri/;
}
location /admin/ {
index index.php;
}
}
locationブロックが2つあり、その2つ共がserverブロック内にあるため、serverブロックの設定はいずれのlocationブロックにも適用される。
locationはURLのパスにマッチするため、https://www.example.com/admin にアクセスが来た場合は「location /admin/」の設定が適用される。それ以外へのアクセスは「location /」の設定が適用される。
詳細については以下の公式ドキュメントを参照。
https://nginx.org/en/docs/beginners_guide.html
よく使うディレクティブ
よく使うディレクティブを記述する。
- mainコンテキスト
ブロック内に記述しない、基本ディレクティブ。
access_log /var/log/nginx/access.log myformat;
- httpコンテキスト
http {}に記述するディレクティブ。httpに関する設定。
http {
server_name example.org www.example.com;
}
- serverコンテキスト
server {}に記述するディレクティブ。バーチャルサーバーに関する設定を記述。
server {
listen 80;
server_name 57.180.13.226;
}
- listen
処理をするIPアドレスやポート番号を指定するディレクティブ。
server {
listen 80; #80番ポートで処理する
}
- server_name
サーバー名を定義するためのディレクティブ。
http {
server_name example.org www.example.com;
}
- location
要求されたURLに応じて設定を変えるためのディレクティブ。
server {
location / {
proxy_pass http://52.69.161.215;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- index
インデックスとして定義するファイルを指定するディレクティブ。
location = / {
index index.html;
}
- error_page
指定したエラーに対して表示するURLを定義するディレクティブ。
error_page 404 /404.html;
- root
ルートディレクトリを設定するためのディレクティブ。
location /i/ {
root /data/w3;
}
- proxy_pass
プロキシサーバーのプロトコルとアドレス、およびオプションのURLを設定するディレクティブ。
proxy_pass http://localhost:8000/uri/;
- proxy_set_header
プロキシサーバーに渡すリクエストヘッダーにフィールドを再定義または追加するディレクティブ。
proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
その他のディレクティブについては以下のマニュアルを参照。
includeについて
includeもディレクティブの1つであり、別の設定ファイルを読み込む時に使用する。ベースとなるnginx.confファイルを修正せずに別ファイルでserverディレクティブの設定を書くことが可能。
<書き方例>
include /etc/nginx/conf.d/*.conf;
include以下に引数を指定する。この引数には読み込みたいファイルパスを指定。
上記のコードは/etc/nginx/conf.d/より下のディレクトリにある「.conf」という拡張子の付いたファイルの全てを読み込むことを意味する。
- Nginxのログフォーマット設定と出力ログの見方を解説
- Nginxを再起動前にコマンドで文法チェックや設定誤りを確認をする方法
- [Nginx]オレオレCA認証局でSSL通信をする手順。サーバ証明書・秘密鍵・証明書署名要求の作成方法
- [Nginx]オレオレCA認証局を利用したクライアント証明書通信をする手順
- Nginxのログ一覧・ログ設定・ログ出力先の確認・設定方法を解説
- NginxでBasic認証の設定する方法
- Nginxの設定ファイル(.conf)の書き方と設定方法
- Nginxでリバースプロキシの構築・設定方法
- NginxでSSL設定してHTTPS通信をする手順
- NginxのVirtualhostを使って1つのサーバーでサブドメインを公開する手順
- [Nginx] サブディレクトリのアクセスを異なるWebサーバーにアクセスを振り分ける方法