AWS ALB を使用する際の nginx DNS キャッシュ

AWS ALB を使用する際の nginx DNS キャッシュ

岩佐 孝浩
岩佐 孝浩
2 min read
ELB

Elastic Load Balancing など、異なる IP アドレスに解決する場合、 nginx の DNS キャッシュを無効にするか、 TTL を短縮する必要があります。

DNS キャッシュが有効な nginx.conf

次の nginx.conf は、 ALB が異なる IP アドレスを返すため、適切に機能しない可能性があります。

location / {
    proxy_set_header Host                   $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    proxy_pass http://internal-xxx-alb-1234567890.ap-northeast-1.elb.amazonaws.com;
}

DNS キャッシュの TTL を短縮した nginx.conf

次の nginx.conf は、適切に機能するはずです。 IP アドレスを60秒間だけキャッシュします。

10.0.0.2: Reserved by AWS. The IP address of the DNS server is the base of the VPC network range plus two.

location / {
    # Added to shorten cache TTL
    resolver 192.168.0.2 valid=60s;
    proxy_set_header Host                   $host;
    proxy_set_header X-Real-IP              $remote_addr;
    proxy_set_header X-Forwarded-Host       $host;
    proxy_set_header X-Forwarded-Server     $host;
    proxy_set_header X-Forwarded-For        $proxy_add_x_forwarded_for;
    proxy_pass http://internal-xxx-alb-1234567890.ap-northeast-1.elb.amazonaws.com;
}
--- 	2021-10-28 20:09:37 +0000
+++ 	2021-10-28 20:09:37 +0000
@@ -1,4 +1,6 @@
 location / {
+    # Added to shorten cache TTL
+    resolver 192.168.0.2 valid=60s;
     proxy_set_header Host                   $host;
     proxy_set_header X-Real-IP              $remote_addr;
     proxy_set_header X-Forwarded-Host       $host;

まとめ

Elastic Load Balancing のような、異なる IP アドレスに解決するロードバランサーを利用する場合、キャッシュの TTL にご注意ください。

この投稿が、お役に立てば幸いです。

岩佐 孝浩

岩佐 孝浩

Software Developer at KAKEHASHI Inc.
AWS を活用したクラウドネイティブ・アプリケーションの要件定義・設計・開発に従事。 株式会社カケハシで、処方箋データ収集の新たな基盤の構築に携わっています。 Japan AWS Top Engineers 2020-2023