AWS ALB を使用する際の nginx DNS キャッシュ
Takahiro Iwasa
2 min read
ELB
Elastic Load Balancing など、異なる IP アドレスに解決する場合、 nginx の DNS キャッシュを無効にするか、 TTL を短縮する必要があります。
DNS キャッシュが有効な nginx.conf
URL Copied!
次の 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
URL Copied!
次の nginx.conf
は、適切に機能するはずです。
IP アドレスを60秒間だけキャッシュします。
192.168.0.2
は、 VPC によって予約された DNS IP です。 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;
まとめ
URL Copied!
Elastic Load Balancing のような、異なる IP アドレスに解決するロードバランサーを利用する場合、キャッシュの TTL にご注意ください。
この投稿が、お役に立てば幸いです。