我在尝试为ELB healthcheck实施基本身份验证时遇到了麻烦。 我已经搜索了很多,以找出nginx文件配置,以避免下面显示的401错误,ELB由于基本身份验证而返回
unhealthy in target-group hogehoge due to (reason Health checks failed with these codes: [401])
我试图修改nginx.conf以避免它,但它不起作用。
下面的代码给出了[emerg] "server" directive is not allowed here
错误。
http {
server {
location / {
if (!$http_x_forwarded_for) {
auth_basic 'Please enter ID and password';
auth_basic_user_file /usr/src/redmine/.htpasswd;
}
}
}
}
如何通过基本身份验证避免ELB healthcheck的401错误?
感谢您的帮助。
答案 0 :(得分:3)
最简单的方法是为ELB创建一个位置,例如:
location /elb-status {
access_log off;
return 200;
}
您只需将Ping Path
更改为/elb-status
如果您想在测试时在浏览器上看到某些内容,则可能需要更改content-type
,因为默认设置为application/octet-stream
,浏览器将提供保存文件,因此这样的内容应该有效:
location /elb-status {
access_log off;
return 200 'your text goes here';
add_header Content-Type text/plain;
}
如果您想检查用户代理,可以使用以下内容:
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;
}