21

クエスチョンマーク「?」にマッチさせたい nginx.conf の場所の正規表現として。

たとえば、一致させたい URL パターンは /something?foo=5 または /something?bar=8 (パラメーターのみ変更可能) です。

nginxはRCPEを採用しているため、nginx.conf に次のように場所を記述できます。

location ~ ^/something\?.* {
}

上記は URL パターンと一致しません。どうやってやるの?

また、以下は私の期待ではありません。

location ~ ^/something?.* {
}

予想外の /something_foo_bar_buzz に一致します。

4

1 に答える 1

40

nginxロケーション ブロックがクエリ文字列とまったく一致しません。だから無理です。

位置

このディレクティブは、URI に応じてさまざまな構成を許可します。

nginx には、ロケーション ブロックが照合される組み込み変数$uriがあります。例えば、お願いをする

http://www.example.com/app/login.php?username=xyz&password=secret

$uri 値は次の文字列です。

 /app/login.php

query_string は nginx 変数 $argsに格納されます。

username=xyz&password=secret

何かをすること。クエリ文字列、次のようなことができます

if ($args ~ username=xyz) {
   # do something for requests with this query string
}

しかし、注意してください、IFは悪です

于 2013-03-30T02:56:04.233 に答える