2017-09-30 3 views
1

Je n'arrive pas à essayer d'implémenter l'authentification de base pour ELB healthcheck. J'ai cherché tout à fait un peu pour comprendre la configuration du fichier nginx pour éviter 401 erreur ci-dessous, qui ELB revient en raison de l'authentification de baseComment éviter l'authentification de base pour AWS ELB health-check avec la configuration de nginx

unhealthy in target-group hogehoge due to (reason Health checks failed with these codes: [401])

J'ai essayé de modifier nginx.conf de façon à évitez-le, mais cela ne fonctionne pas. Le code ci-dessous me donne l'erreur [emerg] "server" directive is not allowed here. Comment puis-je éviter l'erreur 401 par ELB Healthcheck en raison de l'authentification de base?

Merci pour l'aide.

+0

Vous devez avoir ajouté dans la configuration personnalisée pour permettre Basic Auth? Comment avez-vous activé l'authentification en première place? –

Répondre

3

L'approche la plus simple serait de créer un emplacement pour le ELB, par exemple:

location /elb-status { 
    access_log off; 
    return 200; 
} 

Vous aurez juste besoin de changer le Ping Path être /elb-status

Si vous voulez voir quelque chose sur votre navigateur pendant le test, vous devrez peut-être changer le content-type depuis application/octet-stream par défaut et le navigateur vous proposera d'enregistrer le fichier, donc quelque chose comme ça devrait fonctionner:

location /elb-status { 
    access_log off; 
    return 200 'your text goes here'; 
    add_header Content-Type text/plain; 
} 

Si vous souhaitez vérifier quelque chose contre l'agent utilisateur comme celui-ci pourrait être utilisé:

set $block 1; 

# Allow all the ELB health check agents. 
if ($http_user_agent ~* '^ELB-HealthChecker\/.*$') { 
    set $block 0; 
} 
if (!$http_x_forwarded_for) { 
    set $block 1 
} 

if ($block = 1) { 
    auth_basic   'Please enter ID and password'; 
    auth_basic_user_file /usr/src/redmine/.htpasswd; 
} 
+0

Puisque je voulais également activer/désactiver l'authentification de base basée sur l'adresse IP, j'ai utilisé votre 2ème option, et cela a fonctionné. Merci beaucoup! –

+0

Faites attention si «si» sont mal dans nginx (google, vous verrez), vous devez utiliser une directive de la carte à la place de mettre «$ block» –