萌萌の初音
萌萌の初音
发布于 2022-09-02 / 595 阅读
0

ipv6导致的宕机事件

事件前夕

由于web服务器nginx版本有点低,并且还在用http1.1,在内网环境部署1.23版本的nginx并配置http2测试无误后随即将云服务器的nginx进行更新;

引发的问题

更新过后网页访问异常缓慢,图片等静态资源直接无法加载,清空nginx缓存也无法解决随即查看日志:

cat /opt/nginx/logs/error.log

打印出来:

2022/09/02 23:23:06 [error] 31288#31288: *11 connect() failed (113: No route to host) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: rainblog.cn, request: "GET /themes/codelunatic_simple1/source/webfonts/fa-solid-900.woff2 HTTP/1.1", upstream: "http://[ipv6]:port/themes/codelunatic_simple1/source/webfonts/fa-solid-900.woff2", host: "www.rainblog.cn", referrer: "https://www.rainblog.cn/page/1"

什么情况怎么把数据服务器域名解析成ipv6了?突然想起之前数据服务器升级到了动态ipv6,dns自动解析到ipv6上去了,但web应用服务器并不支持ipv6导致网页无法正常加载;

问题的解决

之前写过 博客服务器Nginx访问优化,在里面有个dns缓存配置,通过这个配置可以禁用ipv6,随即进行以下操作:

resolver 8.8.8.8 valid=300s ipv6=off;

在后面加入ipv6=off然后重启nginx,web加载慢的问题解决,并且升级到http2,浏览器禁用缓存可以做到400ms内加载完毕,虚惊一场差点回滚了~