2016-11-27 7 views
0

だから私は、正規表現ベースのロケーションルール、このようなものがありますか? URLがnginxの正規表現の場所

/12abc34/ 

のようなものだった場合、私はそれは方法はあり

.*abc.* 

にマッチしたことを知りたいたよりことを意味?

私はAWSのDebian VMでlua-moduleでコンパイルされた最新のnginxを実行しています。

------------更新-------------

私は内側の場所を使用するように考えていますが、それは醜いになります。

location ~ /(abc.*xyz|def.*zxy|ghk.*qwe)/ 
{ 
    location ~ /(abc.*xyz){...} 
    location ~ /(def.*zxy){...} 
... 
} 

今は60個の正規表現パターンがあります。そのようなアプローチは大丈夫ですか?

+0

'$ request_uri'で' map'を使うことを考えましたか?詳細については、[このドキュメント](http://nginx.org/en/docs/http/ngx_http_map_module.html#map)を参照してください。 –

答えて

1

あなたの正規表現の表現:/(.*abc.*|.*def.*|.*ghk.*)/はに削減することができます任意のnginx URIが/で始まると

location ~ (abc|def|ghk).*/ { ... } 

、あなたは/.*をテストする必要はありません。

カッコ内の正規表現の一部はlocationブロック内$1としてを捕捉あります。

/12abc34/の場合、変数$1abcに設定されます。

+0

でも、(xyz。* abc)のようなルールもあります。あなたがunfortunatellyを提供したソリューションは、これのために動作しません:( –

関連する問題