Nginx よく使う設定

設定ファイルの記述方法

httpディレクティブ

httpディレクティブはサーバ毎の設定を行うserverディレクティブ、さらにURLパス毎の設定を行うlocaltionディレクティブと階層化されています。

http {
    httpコンテキストの設定

    server {
        サーバ毎の設定

        location PATH {
            URLパスの設定
        }
        location PATH {
            URLパス毎の設定
	}
        ...
    }

    server {
        ...
    }
}

httpコンテキストの設定

デフォルトのままで事足りますが、バージョン情報の隠匿とgzip圧縮の設定を追加します。

Nginxの初期設定
初期設定 バージョン情報を消す nginx.confのhttpディレクティブに設定を追加します。 # cd /etc/nginx/...

serverディレクティブ

nginxの設定ファイルに/etc/nginx/conf.dディレクトリにあるconfファイルを読み込む設定があります。

include /etc/nginx/conf.d/*.conf;

このconf.dディレクトリにサーバ毎の設定ファイルを置くことにより、その設定ファイルが読み込まれます。

ファイル名が読み込まれる順が決まってないのでデフォルトサーバの設定を記載していないと、初めに読み込んだバーチャルサーバの設定が反映します。ご注意ください。

Nginx デフォルトサーバの設定
サーバの設定 デフォルトサーバの設定 意図したアクセスとは違う方法でやってきた時の設定を行います。昨今はバーチャルサーバで運用する事が前...

serverコンテキストの設定

serverコンテキストに記述するlistenディレクティブとserver_nameディレクティブにより、IPベース、名前ベースのバーチャルサーバとして区別し複数のバーチャルサーバを運用します。

listen

サーバがリクエストを受け付けるポート番号、サービス名を設定します。複数のポート番号、サービス名を指定することも可能です。

    listen  80 ;
    listen  443 ssl http2;

server_name

サーバの名前を設定します。複数のサーバ名をする場合はスペース区切りで指定します。

    server_name rin-ka.net www.rin-ka.net;

root

ドキュメントルートのディレクトリを設定します。

httpコンテキスト、serverコンテキスト、locationコンテキストに記述できます。

通常はserverコンテキストか、locationコンテキストの”/”に標準のドキュメントルートを設定し、必要に応じて個別のパスのlocationコンテキストに個別にドキュメントルートを設定します。

   server {
       root   /usr/share/nginx/html;
       location /test/ {
          root   /usr/share/nginx/test;
       }
    }
   server {
       location / {
          root   /usr/share/nginx/html;
       }
       location /test/ {
          root   /usr/share/nginx/test;
       }
    }

index

リクエストのURLが”/”で終わっている時にインデックスとして使われるファイル名を設定します。

httpコンテキスト、serverコンテキスト、locationコンテキストに記述できます。

   index index.html index.php;

rewrite

URLをリダイレクトすることができます。

serverコンテキスト、locationコンテキストに記述できます。

   last      : rewriteの処理を停止し、書き換えられたURLに対してlocationを再検索します。
                別のlocationにあるrewriteは実行されます。
   break     : rewriteの処理の停止し、locationの検索を停止します。
                別のlocationにあるrewriteは実行されません。
   permanent : 恒久的なリダイレクト「301」を返します。
   redirect  : 一時的なリダイレクト「302」を返します。
  # lastの場合
  server {
     rewrite ^/common/(.*)$ /_common/$1 last;
     location { ... }
  }
  # breakの場合
  server {
    location { 
        rewrite ^/common/(.*)$ /_common/$1 break;
        ... }
  }
  # 301の場合
  server {
     rewrite ^(.*)$ https://rin-ka.net$1 permanent;
  }
  # 302の場合
  server {
     rewrite ^(.*)$ https://rin-ka.net$1 redirect;
  }

locationコンテキストの設定

URLのパス毎の設定を記述できます。リクエストされたURLパスがこのlocationディレクティブのパスの条件に一致した場合に、locationコンテキストに記述した設定が適応されます。

パスの条件の評価方法は前方一致と正規表現の2つです。

   なし : 前方一致
   ^~   : 前方一致。正規表現よりも優先。
   =    : 完全一致
   ~    : 正規表現(小文字・大文字を区別)
   ~*   : 正規表現(小文字・大文字を区別しない)

パスに対して一致する条件が複数あるときの優先順位

= > ^~ > ~,~*(定義した順番) > なし

URLパスの代わりに@+文字列を指定すると、パスの書き換えを行わずに内部リダイレクトを行う際に利用できます。

  location @test {
    ...
    }

try_files

ファイル、ディレクトリの存在チェックを行います。存在しなかったらリダイレクトさせます。

   try_files $uri /hoge.html;

リダイレクト先のパスの代わりコードを返す事もできます。

   try_files $uri =404;

リダイレクト先のパスの代わり内部リダイレクトさせる事もできます。

パスの書き換えを行わないので内部のアプリケーションサーバにリダイレクトさせることが出来ます。

   location {
      # 静的コンテンツ
      try_files $uri  @test;
   }
   location @test{
    # 動的コンテンツ
       proxy_pass  http://xxx.xxx.xxx.xxx;
   }
スポンサーリンク

シェアする

フォローする

スポンサーリンク