Nginxの設定ファイル(.conf)の書き方と設定方法

本記事ではNginxの設定ファイル(nginx.conf)の書き方について解説する。

目次

前提条件

本記事では以下の環境を前提としている。

Linux 環境
OSDebian 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」という拡張子の付いたファイルの全てを読み込むことを意味する。

  • システム開発、アプリ開発
  • マッチングアプリ開発
  • インフラ構築支援等、なんでもご相談ください。
よかったらシェアしてね!
  • URLをコピーしました!
目次