nginx
configuration
location
regex
matches

nginx `location ~` 正規表現でマッチした部分文字列を回収して使う方法


方法

location ~ ^/packages/(?<author>[a-z]+)/(?<name>[a-z]+)/?$

{
proxy_pass http://127.0.0.1:5984/packages/_design/main/_view/main?key="$author/$name";
}



  1. (?<symbol_name>regex_pattern) で hit させ、


  2. $symbol_name 変数で取り出せる。



だそく


  • とあるサーバーシステムでバックエンドに CouchDB を置いて nginx からリバースプロクシーして一部の機能はほぼ直接一般公開、一部の機能は別に認証システムを経由、といった実装を行う事になり、表向きにはユーザー(アプリケーション)フレンドリーなURLで使用しやすいよう nginx の regex パターンでバックエンドにクエリーする目的で使用する機会があった。


    • ちなみにそのような運用では当然ながら if ( $request_method !~ ^(GET) ) など併用して意図しないユーザーからの DELETE や PUT や POST を防止したり、クエリーをプロクシー段階で破棄するなどのわりと器用な記述も nginx では手間なく簡単にできて便利。




参考