解决不支持ipv6的主机上安装Nginx问题

报错日志中包含了问题的根本原因,最关键的一行是:

nginx: [emerg] socket() [::]:80 failed (97: Address family not supported by protocol)

为什么会报错?

这行错误说明 Nginx 尝试在 IPv6 地址(即 [::]:80)上监听 80 端口,但是你的服务器系统目前不支持或禁用了 IPv6

在 Debian 12 的 Nginx 默认配置中,它会同时尝试监听 IPv4 和 IPv6 端口。当 IPv6 不可用时,Nginx 启动前置测试(-t)就会失败,从而导致整个服务无法启动,并引发 apt 安装过程报错。

解决步骤

我们需要修改 Nginx 的默认配置文件,让它只监听 IPv4 即可。

步骤 1:编辑默认站点配置文件 运行以下命令,使用 nano 文本编辑器打开 Nginx 的默认配置:

Bash

sudo nano /etc/nginx/sites-enabled/default

步骤 2:注释掉 IPv6 监听配置 在文件中往下找(通常在前面几行),你会看到类似这样的两行代码:

Nginx

    listen 80 default_server;
    listen [::]:80 default_server;

将包含 [::]:80 的那一行前面加上一个 # 号,将其注释掉,修改后应该是这样的:

Nginx

    listen 80 default_server;
    # listen [::]:80 default_server;

保存并退出编辑器: 如果你用的是 nano,按 Ctrl + O 保存,然后按 Enter 确认文件名,最后按 Ctrl + X 退出。

步骤 3:测试 Nginx 配置 修改完成后,让 Nginx 自己检查一下配置文件语法是否正确:

Bash

sudo nginx -t

如果输出显示 syntax is oktest is successful,说明修改没问题。

步骤 4:修复包管理器并启动服务 因为刚才的安装过程被打断了(产生了 dpkg 错误),我们需要让系统完成剩下的配置工作:

Bash

sudo dpkg --configure -a

这个命令会自动处理刚刚失败的 Nginx 启动流程。执行完毕后,你可以再次检查 Nginx 的状态:

Bash

sudo systemctl status nginx

这次你应该能看到绿色的 active (running) 了!

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇