最近搭建了一个自动发货网站 aws150.com ,因为服务器A所在的Azure香港总是被干扰,所以用台湾的服务器B做为CDN,反向代理A。

然后把网站解析到服务器B,进入网站,一切正常。

image.png

晚上安稳地睡了一觉,第二天微信客户反馈说网站进不去了。我心里一惊,检查发现访问网站得到 504 Gateway Timeout 错误。我首先想到可能是服务器A拉黑了服务器B,但我早已在A的防火墙白名单中添加了B。

尝试修改Nginx反向代理配置,无法查出任何错误。于是决定紧急修改网站的解析记录,直接解析到服务器A。但我竟然设置了DNS缓存有效期一天,用测速网站测了一下,解析出来的还是服务器B,全国一片红。

是不是服务器被攻击了?检查发现一切正常。

不得已,关闭反向代理,写了一个错误提示:“假如您看到了此页面,请清空DNS缓存。但是客户哪里懂得这种技术活,或者嫌麻烦直接关闭网站。

郁闷。

突然想到,我没有指定 hosts !也就是说,解析生效后,根据我的设定,还需要一天的时间网站的解析才切换到服务器B。我之前测试时在电脑指定hosts到服务器B,此时因为服务器B的解析记录还是A,所以测试一切正常。当一天过后,服务器B的解析记录变成了它自己!

image.png

马上在B添加一条指向A的hosts,问题解决。

我的锅。

但回过头一想,宝塔他自己就不能发现自己反向代理自己吗?就应该给个错误提示。

 

所以,下次添加反向代理的时候要注意:

  1. 先在做反向代理的服务器中的 Hosts 指定被代理的服务器IP。
  2. 使用创宇监控做网站监控,有异常随时通知。
  3. 解析的缓存时间不要设置太长。改了解析之后还要一天才能生效有个屁用!

 

image.png

其实不用宝塔也一样,这就是反向代理的常规操作。


程序猿,攻城狮,给社会主义添 Bug