NGINX反向代理一个IPv6问题
最近部署了一台纯IPv4的缓存节点,来缓存Object Storage的内容
发现一个问题
Cache Node = Only IPv4
Backed Object Storage = IPv6/IPv4
缓存节点 bypass是 https://object.sss.com 域名格式
Nginx会自动解析所有IP 包括IPv6
然而 因为缓存节点服务器不支持IPv6 日志就出现很多错误
2021/01/30 00:25:06 [error] 1930#0: *1482670 connect() to [AAAA:BBBB:C:DDD:E:F:GGG:HHH]:443 failed (101: Network is unreachable) while connecting to upstream, client: AA.BB.CC.DD, server: example.com, request: “GET /download/file HTTP/1.0”, upstream: “https://[AAAA:BBBB:C:DDD:E:F:GGG:HHH]:443/download/file”, host: “example.com”
返回实际上还是返回的200,但是内容是无法访问的
解决方案
在location区域指定解析服务器并且关闭ipv6 就可以了
location / {
resolver 1.1.1.1 ipv6=off valid=30s;
set $empty “”;
proxy_pass https://example.com$empty;
}