外观
动态域名解析
约 275 字小于 1 分钟
2025-09-07
Nginx
中的域名解析,正常情况下在启动时进行一次解析后,将不再重新解析。对于域名解析记录会频繁变化的场景,则无法满足。
此时可借助变量与resolver
来实现动态域名解析。
nginx.conf
http {
resolver 8.8.8.8 valid=60s; # 设置DNS服务器,以及缓存时长
resolver_timeout 5s; # DNS解析超时时间
server {
listen 80;
server_name abc.com;
location / {
set $pass_host xyz.com; # 通过set将域名设置为变量,每次处理变量会重新解析
proxy_pass http://$pass_host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 3s;
}
}
}
额外细节:
- 设置缓存时长
http { resolver 8.8.8.8 valid=60s; # 添加valid设置缓存时长 }
- 开启
IPV6
解析http { resolver [2400:3200::1] ipv6=on; # IPV6的DNS地址用[]包裹,并配置ipv6=on }
- 本地
DNS
解析地址http { resolver 127.0.0.11; # 一般本机的DNS为127.0.0.11 }
- 阿里云
DNS
解析地址http { resolver 223.5.5.5 223.6.6.6 [2400:3200::1] [2400:3200:baba::1] ipv6=on; }