nginxの古いバージョンはDNSのTTLを無視するっぽい
非常にレアなケースですが、僕はそのケースにヒットどころかホームランしてしまったのでブログに残しておきます。
どうやら、nginxの1.1.9以前のバージョンだとDNSキャッシュを独自で持ってTTLを無視する動作をします。
nginxのCHANGEには以下のように記述されています。
Changes with nginx 1.1.9 28 Nov 2011 *) Change: now double quotes are encoded in an "echo" SSI-command output. Thanks to Zaur Abasmirzoev. *) Feature: the "valid" parameter of the "resolver" directive. By default TTL returned by a DNS server is used. Thanks to Kirill A. Korinskiy.
これに当たるケースとしては、
- 1.1.8以前のバージョンを使っている
- 何かしらの理由でnginxが名前解決している
場合です。
で、注意して欲しいのはepel経由でnginxをインストールしている方。
今見たらepelで配布しているnginxは1.0.15なので気をつけて下さい。
例えば、例えばですよ!?こんなシーンの時に問題になりそうですね!
こんな事になったらnginxはDNSキャッシュを持ち続けるので接続出来なくなりますね!
更に言えば、こんな時にも問題になりそうですよ!
- nginxとELBを使っている
きゃー!たいへーん!