是否可以在禁用 IPv6 的情况下进行安装?

我在 Web 模板中看到它会检查 /proc/net/if_inet6 是否存在并关闭对 [::]:80 的监听,但默认的 nginx 文件中仍然有一个。

我添加了以下内容来尝试修复它:

  - exec: sed -i '/listen \[::\]:80 default_server;/d' /etc/nginx/sites-available/default
  - exec: sed -i 's/listen 80 default_server;/listen 0.0.0.0:80 default_server ipv6only=off;/' /etc/nginx/sites-available/default
  - exec: sed -i 's/listen 80 default_server;/listen 0.0.0.0:80 default_server ipv6only=off;/' /etc/nginx/conf.d/discourse.conf

但我在日志中仍然看到这个:

2025/09/02 21:34:29 [emerg] 359#359: socket() [::]:80 failed (97: Address family not supported by protocol)
2025/09/02 21:34:34 [notice] 3240#3240: signal process started
2025/09/02 21:34:34 [error] 3240#3240: open() "/run/nginx.pid" failed (2: No such file or directory)

很久以前,这似乎是不可能的:

有人实际让 Discourse 在内核级别禁用 IPv6 的情况下工作过吗?

(为什么?因为有人提供的虚拟机禁用了 IPv6。他们花了几个月才配置好一个允许我访问的虚拟机。)

怀疑。我最近也从 ssl 文件中移除了一条类似的代码,@schleifer 参与了审查——只是还没来得及处理 web 模板。

IPv6 支持已深度集成到我们的软件包中,因此很难将其完全干净地移除,并提供相应的验证/支持。

1 个赞

非常感谢您的快速确认!我几乎可以肯定就是这种情况,很高兴我没有忽略什么显而易见的简单解决方案。

此主题在上次回复后 30 天自动关闭。不再允许回复。