image_filter で画像の変換とか、proxy_pass とかを組み合わせる場合。
http://cloudrop.jp/labs/nginx_image_filter
こちらでは
proxy_pass http://$s3host/$file;
のように指定しているが、proxy_pass
にURLは含めたくないのだよね。
でも次のように
location /s3_resize {
location
でURLを使ってしまっているので、どうにも上手いこといかない。proxyの先には /s3_resize
のようなURLは無いのだ。
と思っていたら、named locationの書き方を見つけた。
https://gist.github.com/pymeat/7332082
error_page 418 = @backend; return 418;
つまり
location ~* \.(gif|jpg) {
if ( ... ){
error_page 418 = @case1; return 418;
}
error_page 418 = @case2; return 418;
}
location @case1 {
proxy_pass http://backend;
}
location @case2 {
...;
}
このように書くと無駄なlocation urlを消費しないしproxy_pass
も綺麗に書ける。
綺麗というかバッドノウハウ的というか。
ステータスコード 418 は I'm a teapot
のジョークコード。