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 的規則,也會導致錯誤。