旧域名过期更换根域名后captain-nginx启动循环报错如何解决
根因说明
你遇到的两个报错分别对应两个问题:
- 证书路径出现
://前缀:是CapRover配置生成逻辑拼接域名时读取到了残留的带协议前缀的旧域名配置片段,生成了非法的证书路径 - 缺少
events配置块:是证书路径错误导致Nginx配置生成流程中断,最终输出的配置文件不完整
修复步骤
1. 停止所有核心服务,避免自动生成错误配置
docker service scale captain-captain=0 captain-nginx=0 captain-certbot=0
2. 彻底清理残留配置
删除所有旧域名相关的Nginx配置、证书文件,避免残留值干扰新配置生成:
rm -rf /captain/data/nginx/* rm -rf /captain/data/letencrypt/* find /captain/data -name "*lotussoft.online*" -delete
3. 写入最小可用Nginx配置
在/captain/data/nginx/nginx.conf写入以下内容,确保Nginx可以正常启动,且直接转发请求到CapRover核心服务:
events { worker_connections 1024; } http { server { listen 80; server_name _; location / { proxy_pass http://captain-captain:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
4. 临时禁用CapRover自动配置生成逻辑
编辑/captain/data/config-override.json,新增配置跳过Nginx配置生成和SSL校验:
{ "skipVerifyingDomains": "true", "skipNginxConfigGeneration": "true", "skipAutoSslRenew": "true" }
5. 依次启动服务
先启动核心服务,确认运行正常后再启动Nginx:
docker service scale captain-captain=1 # 等待30秒确保CapRover核心服务初始化完成 sleep 30 docker service scale captain-nginx=1
后续操作
服务启动正常后,直接通过服务器公网IP:3000访问CapRover管理后台,进入域名设置页面重新提交新根域名lotussoft-it.com,触发配置重新生成。确认后台功能正常、SSL证书签发完成后,删除config-override.json里的skipNginxConfigGeneration和skipAutoSslRenew配置项,重启captain-captain服务恢复自动配置逻辑即可。
内容的提问来源于stack exchange,提问作者Kamal Kunwar
相关产品推荐
相关产品推荐

