2011年6月27日月曜日

nginx設定 locationブロックの構文


このエントリーをはてなブックマークに追加


ブロック




    • プロトコルレベル(httpブロック)

    • サーバレベル(serverブロック)

    • URIレベル(locationブロック)




http {
....
server {
.....
location {
.....
}
}
}



locationは入れ子可能だが、 = でマッチさせた場合は無理。^~も?


locationブロックの優先順位 基本


構文

location [=|~|~*|~~|@] pattern { ... }


優先順位

設定ファイルに書く順番関係なく、修飾子よって優先順位が違う。



  1. =(等価。^~と同じで、以降のlocationとマッチしない。)

  2. 修飾子なしでpatternがURIに完全マッチ

  3. ^~(5番の修飾子なし先頭部分マッチと同じだが、最初にマッチしたパスで検索終了)

  4. ~ or ~* (正規表現を使用。大文字小文字の区別ありとなし)

  5. 修飾子なしで、patternがURIに先頭部分マッチ



locationブロックの優先順位 応用


修飾子なしで、同じパターン

エラーになる。



location /hoge/ {}
location /hoge/ {}




同じ正規表現

先に書いたほうが優先



location ~ /hoge/ {} #優先
location ~ /hoge/ {}




修飾子なしで、前方一致

より長く一致したほうが優先



location /ho {}
location /hog {} #優先




異なる修飾子で前方一致

修飾子関係なく、長く一致したほうが優先



location ^~ /ho {} #修飾子としてはこちらが強いが、
location /hog {} #こちらが優先される






0 件のコメント:

コメントを投稿