NginxでIf文を if ($host = 'www.example.com' && $request_uri ~ "/admin")
という風には書けない。
入れ子にもできません。(ディレクティブなので?)
そこで逃げ道は 文字列結合で判定
。
if ($request_uri = /) {
set $test A;
}
if ($host ~* teambox.com) {
set $test "${test}B";
}
if ($http_cookie !~* "auth_token") {
set $test "${test}C";
}
if ($test = ABC) {
proxy_pass http://teambox-cms.heroku.com;
break;
}
参考(というかそのものですが)
https://gist.github.com/jrom/1760790
ちなみにifisevil
と公式ドキュメントにあります。使わないほうが良さそう。
http://wiki.nginx.org/IfIsEvil