Caddy 及 Web 服务故障排除指南
ServBay 使用 Caddy 作为默认的 Web 服务器,在日常使用中,用户可能会碰到网站打不开等一些问题,下面是一些常见问题的解决方法。
使用 ServBay 自带工具排障
ServBay 自带了功能非常强大的故障诊断工具,我们建议使用 ServBay 自带的故障排除工具来自助诊断和解决。
打开 ServBay 应用,在左侧导航中找到故障诊断
,即可进入 ServBay 自带的故障诊断工具。
检查Caddyfile
如果希望通过手工方式自行排除故障,可以参考下面的一些步骤
使用 Caddy 内置的验证功能来验证 Caddyfile 是否正确。请运行下面的命令
$ /Applications/ServBay/bin/caddy validate -c /Applications/ServBay/etc/caddy/Caddyfile
如果返回Valid configuration
,那就说明一切正常。如果返回其他错误代码,请根据错误代码的提示进行下一步的操作。(注意:上面的命令会有大量的 INFO 和 WARN 输出,这是正常情况,不会影响服务的正常运行)
证书错误
如果出现类似下面的错误loading certificates: open xxxxx: no such file or directory
,那就意味着证书文件不存在。请检查证书文件的地址是否正确。
2024/12/09 17:24:16.970 INFO using config from file {"file": "/Applications/ServBay/etc/caddy/Caddyfile"}
2024/12/09 17:24:16.991 INFO adapted config to JSON {"adapter": "caddyfile"}
2024/12/09 17:24:16.991 WARN Caddyfile input is not formatted; run 'caddy fmt --overwrite' to fix inconsistencies {"adapter": "caddyfile", "file": "/Applications/ServBay/etc/caddy/Caddyfile", "line": 8}
2024/12/09 17:24:16.999 INFO tls.cache.maintenance started background certificate maintenance {"cache": "0x1400121f300"}
2024/12/09 17:24:17.006 INFO tls.cache.maintenance stopped background certificate maintenance {"cache": "0x1400121f300"}
Error: loading http app module: provision http: getting tls app: loading tls app module: provision tls: loading certificates: open /Applications/ServBay/ssl/private/tls-certs/mail.servbay.host/mail.servbay.host.1crt: no such file or directory
2
3
4
5
6
7
网站目录错误
如果出现下面的错误parsing caddyfile tokens for 'root': too many arguments
,请检查网站目录的路径中是否存在空格。这是一个非常常见的错误。
比如root * /Applications/ServBay/www/public web
,在 public
和 web
之间有一个空格,这样会被当做两个参数,导致错误。正确的设置方法是使用双引号(")把路径包裹起来。比如root * "/Applications/ServBay/www/public web"
。
我们强烈建议不要在任何文件名、路径中包含空格和特殊符号。对于单词的分割,可以使用-
或者_
符号,比如:public-folder
、public_dir
。
2024/12/09 17:26:37.371 INFO using config from file {"file": "/Applications/ServBay/etc/caddy/Caddyfile"}
Error: adapting config using caddyfile: parsing caddyfile tokens for 'root': too many arguments; should only be a matcher and a path, at /Applications/ServBay/etc/caddy/Caddyfile:1388
2
3
Rewrite 规则错误
在 Caddy 中使用了不正确的 Rewrite 规则,比如直接使用 NGINX 的规则,也会导致错误。