AWS ELBヘルスチェックを円滑に保つためにNginxで動作している次のコードがあります。
map $http_user_agent $ignore {
default 0;
"ELB-HealthChecker/1.0" 1;
}
server {
location / {
if ($ignore) {
access_log off;
return 200;
}
}
}
Nginxでは「IF」を回避するのが最善であることがわかっています。「if」なしでこれを再コーディングする方法を誰かが知っているかどうか尋ねたかったのですか。
ありがとうございました
物事を複雑にしないでください。 ELBヘルスチェックを特別なURLに向けるだけです。
server {
location /elb-status {
access_log off;
return 200;
}
}
上記の答えを改善するためだけです、それは正しいです。以下は素晴らしい作品です:
location /elb-status {
access_log off;
return 200 'A-OK!';
# because default content-type is application/octet-stream,
# browser will offer to "save the file"...
# the next line allows you to see it in the browser so you can test
add_header Content-Type text/plain;
}
更新:ユーザーエージェントの検証が必要な場合、
set $block 1;
# Allow only the *.example.com hosts.
if ($Host ~* '^[a-z0-9]*\.example\.com$') {
set $block 0;
}
# Allow all the ELB health check agents.
if ($http_user_agent ~* '^ELB-HealthChecker\/.*$') {
set $block 0;
}
if ($block = 1) { # block invalid requests
return 444;
}
# Health check url
location /health {
return 200 'OK';
add_header Content-Type text/plain;
}