map
これらの変数は使用されたときにのみ評価されるため、推奨される方法はおそらくを使用することです。
また、return 301 ...
正規表現をコンパイルする必要がないため、書き換えよりもの使用が推奨されます。
ここで、連結された文字列としてのホストとユーザーエージェントが単一の正規表現と比較される例:
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" 1;
}
server {
if ($my_domain_map_host) {
return 302 http://www.domain2.com$request_uri;
}
}
そして、これは、たとえば、2つではなく、より多くのドメインが関与している場合、さらに柔軟になる可能性があります。
ここではwww.domain.com
、Agent
to http://www.domain2.com
で始まるuser-agent www.domain2.com
と、正確なuser-agent Other Agent
toでマッピングしますhttp://www.domain3.com
。
map "$host:$http_user_agent" $my_domain_map_host {
default 0;
"~*^www.domain.com:Agent.*$" http://www.domain2.com;
"~*^www.domain2.com:Other Agent$" http://www.domain3.com;
}
server {
if ($my_domain_map_host) {
return 302 $my_domain_map_host$request_uri;
}
}
注意: mapで連結された文字列を機能させるには、nginx 0.9.0以上が必要です。