在宝塔面板终端中操作 api.zhuzhichao.cc 的 Nginx 配置时,发现面板生成的配置文件导致 SSL 证书申请失败,Nginx 无法重新加载。
1️⃣ 宝塔面板终端操作记录
- 查看配置文件:sudo nano /www/server/panel/vhost/nginx/api.zhuzhichao.cc.conf
- 文件显示有原始 server block,包括 listen、server_name、location、ssl_protocols、ssl_ciphers 等。
- 并非空白,文件中确实存在 SSL 配置和 location 指令
2. 尝试删除重复 SSL 配置:# 备份原文件
sudo cp /www/server/panel/vhost/nginx/api.zhuzhichao.cc.conf \
/www/server/panel/vhost/nginx/api.zhuzhichao.cc.conf.bak
# 删除重复行(ssl_protocols 和 ssl_ciphers)
sudo awk '!seen[$0]++' /www/server/panel/vhost/nginx/api.zhuzhichao.cc.conf \
> /tmp/api.zhuzhichao.cc.conf.tmp
sudo mv /tmp/api.zhuzhichao.cc.conf.tmp /www/server/panel/vhost/nginx/api.zhuzhichao.cc.conf
3. 检查 Nginx 配置:sudo nginx -t
- 报错信息:"location" directive is not allowed here
duplicate value "TLSv1.1"
duplicate value "TLSv1.2"
duplicate value "TLSv1.3"
"ssl_ciphers" directive is duplicate
4. 尝试重载 Nginx
sudo nginx -s reload
问题原因分析
- 重复 SSL 配置
- ssl_protocols 和 ssl_ciphers 多次出现,导致 Nginx 警告或报错。
- location 指令嵌套错误
- 面板生成的 location 块位置不正确。
- Nginx 不允许在 server block 某些位置嵌套 location。
- 配置文件位置
- 通过宝塔面板本地终端才能看到完整配置文件。
- Mac 本地无法直接访问 /www/server/panel/vhost/nginx/ 路径。
- 用户尝试命令行操作修改仍然报错,无法解决问题。
- 面板保护
- 面板提示“请勿修改”,手动修改可能被覆盖或引发新的错误。
3️⃣ 关键问题总结
- 宝塔面板生成的 server block 本身存在问题:
- SSL 配置重复。
- location 指令位置不合法。
- 用户操作无法解决:
- 删除重复行无法修复 location 嵌套问题。
- 直接修改会触发面板警告或报错。
- 直接影响:
- SSL 证书申请失败。
- Nginx 无法重新加载。
建议
- 面板端修复 server block 自动生成逻辑:
- 删除重复 SSL 配置。
- 修正 location 块嵌套位置,确保符合 Nginx 语法。
- 提供官方正确模板供用户手动替换。
- 确保修改后能够通过 nginx -t 并成功加载。