nginx 反向代理解析域名成 ipv6 的问题

2023-08-03 09:56:17 +08:00
 Hopetree

我这两天发现我网站使用的图床(七牛云)的图片都访问不了,然后查看 nginx 发现把域名都解析成了 ipv6 的地址,导致无法访问,nginx 报错内容如下:

2023/08/03 09:45:32 [error] 22413#22413: *2095 connect() to [240e:97d:10:1401::40f]:80 failed (101: Network is unreachable) while connecting to upstream, client: 58.213.139.101, server: tendcode.com, request: "GET /cdn/article/2307/celery-db.png HTTP/1.1", upstream: "http://[240e:97d:10:1401::40f]:80/article/2307/celery-db.png", host: "tendcode.com", referrer: "https://tendcode.com/"
2023/08/03 09:45:32 [error] 22413#22413: *2095 connect() to [240e:97d:10:1401::40e]:80 failed (101: Network is unreachable) while connecting to upstream, client: 58.213.139.101, server: tendcode.com, request: "GET /cdn/article/2307/celery-db.png HTTP/1.1", upstream: "http://[240e:97d:10:1401::40e]:80/article/2307/celery-db.png", host: "tendcode.com", referrer: "https://tendcode.com/"

这里可以看到上游请求的是 ipv6 ,但是我发现在 nginx 里面配置禁用 ipv6 之后还是会解析成 ipv6 ,我的配置如下:

我这里就是把/cdn/的转到我配置给七牛云的 cdn 域名,为啥这里还会解析成 ipv6 ?

2283 次点击
所在节点    NGINX
12 条回复
guoguobaba
2023-08-03 11:35:24 +08:00
```
set $backend "pic.xxx";
proxy_pass http://$backend/;
```
这样才能交给你定义的 dns 服务器解析
skiy
2023-08-03 12:51:15 +08:00
```
listen 80;
listen [::]:80;
```

把 [::]:80 干掉。同理,443 [::]:443 的也一样。不行的话,把 AAAA 删掉应该没问题了吧? CNAME 的我不了解。
Hopetree
2023-08-03 15:06:07 +08:00
@skiy 我转发的这个域名不是我的服务,是我的域名解析到七牛了,所以不存在 listen
Hopetree
2023-08-03 15:06:23 +08:00
@guoguobaba 我先试试,有用过来回复
skiy
2023-08-03 15:21:45 +08:00
我以为你这个日志是在 server 上的。

另外,我看了下七牛的后台。有选项的,如果没法修改,试试重新添加看看。
```
IP 协议 IPv4 / IPv6 IPv4
```

https:portal.qiniu.com/cdn/domain/create
skiy
2023-08-03 15:33:28 +08:00
我刚刚查了,如果只是使用对象存储,好像没有选项设置。

如果你网站是在国内,那将贴内的那个 8.8.8.8 的的 Google 公共 IP 换成其它的国内的,比如主页的那个火山的看看?

还有,我上面说的那个 listen ,应该是在说主域名这边的 nginx ,也就是你贴图中的那个配置内。

建议跟七牛云的客服沟通下看看怎么解决。
Hopetree
2023-08-03 16:09:27 +08:00
@skiy 一楼老哥的方案我用了,好像是可以了,我配置完之后就没有看到解析成 ipv6 的报错日志了,感谢!
Hopetree
2023-08-03 16:12:30 +08:00
@skiy 哈哈哈,我刚才去看了七牛这里也的确可以设置,我换成了只解析 ipv4
cnbatch
2023-08-03 20:20:48 +08:00
更好的解决办法不是应该告知七牛云 IPv6 无法访问吗?
Hopetree
2023-08-04 10:10:22 +08:00
@cnbatch 错了,最好的方案是我自己解决问题,当问题解决之后可以跟他们反馈,毕竟他们会不会解决不是我能控制的,而我的方案我自己能控制,这才是优先使用的方案,不过我也会跟他们反馈
cnbatch
2023-08-04 11:59:06 +08:00
按我理解,自己解决仅仅是属于临时方案,让七牛解决属于从根本上消灭问题

这不是谁控制的问题,而是消灭根源的问题
gotosre
2023-08-16 19:28:44 +08:00
@Hopetree 用一个 upstream 包一下也行

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/961981

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX