文件
一個 專案

慣例

Caddy 生態系統遵循一些慣例,以確保平台上的一致性和直覺性。

網路位址

在指定要撥接或繫結的網路位址時,Caddy 接受以下格式的字串

network/address

網路部分是選配的(預設為 tcp),且為 Go 的 net.Dial 函式 所識別的任何內容。如果指定網路,則單一正斜線 / 必須將網路和位址部分分開。

網路可以是下列任何一個;附有 46 後綴的網路分別僅為 IPv4 或 IPv6

  • TCP:tcptcp4tcp6
  • UDP:udpudp4udp6
  • IP:ipip4ip6
  • Unix:unixunixgramunixpacket

地址部分可以是以下任何形式

  • 主機
  • 主機:埠
  • :埠
  • /path/to/unix/socket
  • /path/to/unix/socket|0200

主機可以是任何主機名稱、可解析的網域名稱或 IP 地址。

埠可以是單一值(:8080)或包含範圍(:8080-8085)。埠範圍將乘以單數地址。並非所有設定檔欄位都接受埠範圍。特殊埠 :0 表示任何可用埠。

只有在使用 unix* 網路類型時,unix socket 路徑才可接受。分隔網路和地址的正斜線不視為路徑的一部分。

當 unix socket 用作繫結地址時,您可以在路徑後選擇使用管線 | 指定檔案權限模式。預設為 0200(八進制),即 u=w,g=,o=(符號)。開頭的 0 是可選的。

有效的範例

:8080
127.0.0.1:8080
localhost:8080
localhost:8080-8085
tcp/localhost:8080
tcp/localhost:8080-8085
udp/localhost:9005
unix//path/to/socket
unix//path/to/socket|0200

佔位符

Caddy 的設定檔支援使用佔位符(變數)。使用佔位符是將動態值注入靜態設定檔的簡單方法。

佔位符兩側以大括號 { } 圍住,並在其中包含變數名稱,例如:{foo.bar}。佔位符大括號可以跳脫,\{like so\}。變數名稱通常使用點命名空間,以避免模組間發生衝突。

哪些佔位符可用取決於上下文。並非所有佔位符都可以在設定檔的所有部分使用。例如,HTTP 應用程式設定佔位符,這些佔位符僅可在與處理 HTTP 要求相關的設定檔區域中使用。

以下佔位符始終可用

佔位符 說明
{env.*} 環境變數(範例:{env.HOME}
{system.hostname} 系統本機主機名稱
{system.slash} 系統檔案路徑分隔符號
{system.os} 系統作業系統
{system.arch} 系統架構
{system.wd} 目前工作目錄
{time.now} 目前時間,格式為 Go Time 結構
{time.now.http} 目前時間,格式為 HTTP 標頭 使用的格式
{time.now.unix} 目前時間,格式為秒數的 Unix 時間戳記
{time.now.unix_ms} 目前時間,格式為毫秒的 Unix 時間戳記
{time.now.common_log} 目前時間,格式為常見記錄格式
{time.now.year} 目前年份,格式為 YYYY

並非所有設定檔欄位都支援插入符號,但大部分欄位在您預期的地方都支援。

檔案位置

本節包含有關如何尋找各種檔案的資訊。這裡所述的檔案和目錄路徑充其量只是預設值;有些可以覆寫。

您的設定檔

沒有單一、慣用的位置可供您放置設定檔。請將它們放在對您最有意義的地方。

附帶預設設定檔的發行版應記錄此設定檔的位置,即使對套件/發行版維護者而言可能很明顯。對於大多數 Linux 安裝,Caddyfile 將位於 /etc/caddy/Caddyfile

資料目錄

Caddy 將 TLS 憑證和其他重要資產儲存在資料目錄中,資料目錄由 設定的儲存模組(預設:本機檔案系統)提供支援。

如果設定了 XDG_DATA_HOME 環境變數,則為 $XDG_DATA_HOME/caddy

否則,其路徑會因平台而異,並遵守作業系統慣例

作業系統 資料目錄路徑
Linux、BSD $HOME/.local/share/caddy
Windows %AppData%\Caddy
macOS $HOME/Library/Application Support/Caddy
Plan 9 $HOME/lib/caddy
Android $HOME/caddy(或 /sdcard/caddy

所有其他作業系統都使用 Linux/BSD 目錄路徑。

資料目錄不可視為快取。其內容並非暫時性的或僅為了效能。Caddy 將 TLS 憑證、私密金鑰、OCSP 訂書釘和其他必要資訊儲存在資料目錄中。在不了解影響的情況下,不應清除資料目錄。

此目錄必須是持久的,且 Caddy 可寫入,這一點至關重要。

設定目錄

Caddy 可能會將某些設定儲存在磁碟中。最值得注意的是,它會將最後一個活動設定(預設)持續儲存在這個資料夾中,以便稍後使用 caddy run --resume 輕鬆恢復。

如果設定了 XDG_CONFIG_HOME 環境變數,則為 $XDG_CONFIG_HOME/caddy

否則,其路徑會因平台而異,並遵守作業系統慣例

作業系統 設定目錄路徑
Linux、BSD $HOME/.config/caddy
Windows %AppData%\Caddy
macOS $HOME/Library/Application Support/Caddy
Plan 9 $HOME/lib/caddy

所有其他作業系統都使用 Linux/BSD 目錄路徑。

此目錄必須是持久的,且 Caddy 可寫入,這一點至關重要。

持續時間

持續時間字串在 Caddy 的設定中很常見。它們採用與 Go 的 time.ParseDuration 語法 相同的格式,但你也可以使用 d 來表示天(為簡化起見,我們假設 1 天 = 24 小時)。有效的單位為

  • ns(奈秒)
  • us/µs(微秒)
  • ms(毫秒)
  • s(秒)
  • m(分鐘)
  • h(小時)
  • d(天)

範例

  • 250ms
  • 5s
  • 1.5h
  • 2h45m
  • 90d

JSON 設定 中,持續時間值也可以是表示奈秒的整數。