发布于 1 个月前
发布于 1 个月前
asun 🇨🇳 廖建山
更新于 1 个月前
0
0
Nginx 在使用 proxy_pass 反向代理到一个域名(而非IP地址)时,会将该域名解析出的 IP 地址缓存在resolver的内部缓存中。这个缓存不会自动刷新,即使 DNS 记录已更新,Nginx 仍可能使用旧的 IP,导致服务中断或请求错误。
雷池在创建应用后会生成如下相关配置
1upstream backend_13 { 2 server sunline.ziyo.ren:12345; 3 keepalive 128; 4 keepalive_timeout 75; 5}
我们希望可以有个是否开启DNS动态解析的选项,开启后可以增加下面两行配置
1upstream backend_13 { 2 server sunline.ziyo.ren:12345; 3 zone backend_26 64k; # 必须:共享内存区域 4 resolve; # 关键:启用 DNS 动态解析 5 keepalive 128; 6 keepalive_timeout 75; 7}
asun 🇨🇳 廖建山
更新于 1 个月前
0
0

增加一个选项,启用DNS动态解析
生成的upstream配置里根据选项适当增加如下配置
zone backend_26 64k; # 必须:共享内存区域
resolve; # 关键:启用 DNS 动态解析
利用现有的“上游服务器健康检查”功能,检查DNS,发现有变化了就reload一下
雷池-洋仔
更新于 1 个月前
感谢反馈,目前waf界面无法在上游服务器配置的upstream配置dns动态解析,我们这会记录这个需求
不过在最新版本(9.2.7)的waf中可以配置location{}块自定义nginx配置实现动态解析的效果,可以尝试一下
配置某个站点的自定义配置文件/data/safeline/resources/nginx/custom_params/backend_x
添加如下配置
proxy_ssl_server_name on;
proxy_ssl_name $host;
resolver x.x.x.x valid=30s; #新增配置
退出保存执行docker exec -it safeline-tengine nginx -t以及docker exec -it safeline-tengine nginx -s reload实现dns动态解析的效果
新增脚本进行秒级循环的执行nginx重载