ELBに接続されたリバースプロキシとしてnginxで動作するvarnish 4サーバーがあります。
2 日ごとにサーバーが応答を停止し、nginx access.log に 499 の応答が表示されます
nginx を再起動すると問題が解決します。
これらの 499 の応答が得られるようになったのはなぜですか?
nginx を再起動して問題を解決するのはなぜですか?
ELBに接続されたリバースプロキシとしてnginxで動作するvarnish 4サーバーがあります。
2 日ごとにサーバーが応答を停止し、nginx access.log に 499 の応答が表示されます
nginx を再起動すると問題が解決します。
これらの 499 の応答が得られるようになったのはなぜですか?
nginx を再起動して問題を解決するのはなぜですか?
2 つの事実を理解した後、問題を解決しました。
1) ELB インスタンスには動的 DNS 名があります
2)nginxはリロード/再起動時にのみDNS名を解決します
問題は、ELB が IP アドレスを変更し、nginx が古い IP アドレスを保持していたことです。
解決策は、nginx.conf でリゾルバーを使用することです。ここに私のnginx.confがあります:
http {
resolver x.x.x.x valid=30s;
}
server {
set $elb "example.com";
location / {
proxy_pass http://$elb;
}
}
リゾルバーの IP アドレスは、/etc/resolv.conf などの DNS サーバーである必要があります。