Nginx 複雑な正規表現をmapでいい感じにする
Nginxで複雑な正規表現を使ってifdirective使ってリクエストをハンドリングしたい
BotをUserAgentの正規表現からいい感じに判断して503とかかえ
ISUCON10予選敗退したでできなかったやつ
これが
code:nginx.conf
server {
if ($http_user_agent ~ ISUCONbot) {
return 503;
}
if ($http_user_agent ~ crawler \(https://isucon\.invalid/(support/faq/|help/jp/)) {
return 503;
}
...
}
map directiveを使うとこんな感じにかける
code:nginx.con
map $http_user_agent $bot {
default 0;
"~ISUCONbot" 1;
"~crawler \(https://isucon\.invalid/(support/faq/|help/jp/)" 1;
...
}
server {
if ($bot = 1) {
return 503;
}
}
https://nginx.org/en/docs/http/ngx_http_map_module.html