V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Hopetree
V2EX  ›  NGINX

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

  •  
  •   Hopetree ·
    Hopetree · 2023-08-03 09:56:17 +08:00 · 2374 次点击
    这是一个创建于 512 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我这两天发现我网站使用的图床(七牛云)的图片都访问不了,然后查看 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 ,我的配置如下:

    image

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

    12 条回复    2023-08-16 19:28:44 +08:00
    guoguobaba
        1
    guoguobaba  
       2023-08-03 11:35:24 +08:00
    ```
    set $backend "pic.xxx";
    proxy_pass http://$backend/;
    ```
    这样才能交给你定义的 dns 服务器解析
    skiy
        2
    skiy  
       2023-08-03 12:51:15 +08:00
    ```
    listen 80;
    listen [::]:80;
    ```

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

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

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

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

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

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

    这不是谁控制的问题,而是消灭根源的问题
    gotosre
        12
    gotosre  
       2023-08-16 19:28:44 +08:00 via iPhone
    @Hopetree 用一个 upstream 包一下也行
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2742 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:56 · PVG 19:56 · LAX 03:56 · JFK 06:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.