LoginSignup
0
1

More than 5 years have passed since last update.

Nginxのif文であれこれやりたいとき

Posted at

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 のジョークコード。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1