nginxでパスのアクセスをif文で判定する方法は?

LocationとIf命令を組み合わせてアクセスパスを判断することができます。

以下はNginxの設定ファイルの例です。

server {
    listen 80;
    server_name example.com;
    
    root /var/www/html;

    location / {
        if ($request_uri = /path1) {
            rewrite ^ /path2 last;
        }
        if ($request_uri = /path3) {
            # 执行特定操作
        }
        if ($request_uri ~* "^/path4/.*$") {
            # 执行特定操作
        }
        if ($request_uri ~* "^/path5/(.*)$") {
            rewrite ^ /path6/$1 last;
        }

        # 默认操作
    }
}

上記の設定では、アクセスパスを判断するためにif命令を使用しています。

  1. $request_uriが/path1の場合、リクエストを/path2に書き換えて処理を停止します。
  2. $request_uri = /path3 の場合、特定の操作を実行します。
  3. $request_uriが”^/path4/.*$”に一致する場合、特定の操作を実行する。~*は正規表現の一致、^は最初、.*$は任意の文字を意味する。
  4. $request_uriが”^/path5/(.*)$”と一致した場合、リクエストを”/path6/$1″に書き換えて処理を停止します。”(.*)”は任意の文字をかぎ括弧でキャプチャし、リライトで$1を使って参照します。

if指令を使用する際は、その性能影響や予測不能な挙動を考慮する必要があります。したがって、if指令を過剰に使用することを避け、可能であれば、より適した指令を使用してリクエストを処理することをお勧めします。

bannerAds