J'ai le code suivant qui travaille sur Nginx pour garder le contrôle de santé AWS ELB heureux.
map $http_user_agent $ignore {
default 0;
"ELB-HealthChecker/1.0" 1;
}
server {
location / {
if ($ignore) {
access_log off;
return 200;
}
}
}
Je sais que le "SI" est mieux évité avec Nginx et je voulais demander si quelqu'un saurait recoder cela sans le "si"?
merci
Ne compliquez pas les choses. Pointez simplement vos contrôles de santé ELB vers une URL spéciale rien que pour eux.
server {
location /elb-status {
access_log off;
return 200;
}
}
Juste pour améliorer la réponse ci-dessus, qui est correcte. Ce qui suit fonctionne très bien:
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;
}
Mise à jour: si la validation de l'agent utilisateur est nécessaire,
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;
}