我在 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。他们花了几个月才配置好一个允许我访问的虚拟机。)