其实很早之前就遇到了这个问题,因为懒没有深究所以就弄了个定时重启脚本解决了,但是最近小区旁边修有轨电车,老是弄断电信的光纤,我家也跟着时不时断网,路由里面的 DDNS 就随着断断续续的网络反复解析,然后我的 File Browser 又是用的反代,解析太频繁导致 VPS 上面的 Nginx 根本等不及脚本自动重启。我人又在外地毕竟是个长期使用问题,总得想个办法彻底解决,于是就走上了度娘这条不归路,一搜文章倒是挺多但根据上面的配置也完全不起作用(全是转载水文),索性干脆换谷歌,大概折腾了半个小时找到了一篇博文顺利解决这个问题,这里就做一下记录,顺便留给有相同问题的同学。
Nginx 是默认机制是重启 Nginx 才会更新DNS,所以对于反代需求的MJJ们如果本地IP发生变成,反代的网站就会打不开。下面的方法可以解决这个问题。
Nginx 站点配置文件(非全局配置文件)
server
{
listen 80;
server_name A.Ai.Mr;
#代理域名
resolver 8.8.8.8 valid=10s;
#resolver 114.114.114.114 8.8.8.8 valid=10s;
#DNS地址,缓存刷新时间
resolver_timeout 1s;
#查询超时时间
set $service_lb B.Ai.Mr;
#被代域名
location / {
proxy_pass https://$service_lb:666;
#被代端口
}
}
A.Ai.Mr 是访问域名,resolver 是 DNS 服务器地址(国外 VPS 推荐 8.8.8.8),valid 是 DNS 的缓存刷新频率(时间长短可以自定义,最好别低于 10s),resolver_timeout 是 DNS 查询超时时间(这个可以保持 1s 默认),B.Ai.Mr 是反代域名,:666 是反代端口。这个配置的意思就是每隔 10 秒查询一次反代域名的解析地址并应用。
下面是这写好的正在使用的代码(宝塔面板):
#PROXY-START/
resolver 8.8.8.8 valid=20s;
set $qh_ddns disk.baidu.com;
location ~* \.(gif|png|jpg|css|js|woff|woff2)$
{
proxy_pass http://$qh_ddns:888;
proxy_set_header Host disk.baidu.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
expires 12h;
}
location /
{
proxy_pass http://$qh_ddns:888;
proxy_set_header Host disk.baidu.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
proxy_ignore_headers Set-Cookie Cache-Control expires;
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 304 301 302 1m;
}
#PROXY-END/
本文来自投稿,不代表本站立场,如若转载,请注明出处: