慣例
Caddy 生態系統遵循一些慣例,以確保平台上的一致性和直覺性。
網路位址
在指定要撥接或繫結的網路位址時,Caddy 接受以下格式的字串
network/address
網路部分是選配的(預設為 tcp
),且為 Go 的 net.Dial
函式 所識別的任何內容。如果指定網路,則單一正斜線 /
必須將網路和位址部分分開。
網路可以是下列任何一個;附有 4
或 6
後綴的網路分別僅為 IPv4 或 IPv6
- TCP:
tcp
、tcp4
、tcp6
- UDP:
udp
、udp4
、udp6
- IP:
ip
、ip4
、ip6
- Unix:
unix
、unixgram
、unixpacket
地址部分可以是以下任何形式
主機
主機:埠
:埠
/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 設定 中,持續時間值也可以是表示奈秒的整數。