nginx 服务启动失败问题记录
背景和问题
systemctl status nginx.service 查看报错信息,显示如下:
nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)
nginx: configuration file /etc/nginx/nginx.conf test failed
问题分析
这个错误通常表示 Nginx 在尝试监听 IPv6 地址 [::]:80(即所有可用的 IPv6 接口的端口 80)时遇到了问题,因为当前系统不支持或者未启用 IPv6。
解决方法
方案一:禁用 Nginx 的 IPv6 监听
如果你不需要 IPv6 支持,或者暂时不能解决 IPv6 相关的问题,可以修改 Nginx 配置文件,让其仅监听 IPv4 地址。
编辑你的 Nginx 配置文件(通常是 /etc/nginx/nginx.conf 或者位于 /etc/nginx/conf.d/ 目录下的某个文件),找到类似以下的 server 块:
server {listen 80; # 仅监听 IPv4 地址# 移除或注释掉下面这行# listen [::]:80; # 这一行尝试监听 IPv6 地址...
}
方案二:启用 IPv6 支持
确认内核模块已加载,如果未加载,加载内核模块。
lsmod | grep ipv6
modprobe ipv6
总结
问题分析记录。