Caddyfile 指令
指令是出現在網站 區塊 中的功能性關鍵字。有時候,它們可能會開啟自己的區塊,其中可以包含子指令,但除非另有說明,否則指令不能用於其他指令中。例如,您不能在 file_server
區塊中使用 basicauth
,因為 file_server
不知道如何進行驗證。但是,您可以在特殊指令區塊(例如 handle
和 route
)中使用一些指令,因為它們專門設計用於將 HTTP 處理常式指令分組。
以下指令是 Caddy 的標準指令,可用於 HTTP Caddyfile
指令 | 說明 |
---|---|
abort | 中止 HTTP 要求 |
acme_server | 一個嵌入式 ACME 伺服器 |
basicauth | 強制執行 HTTP 基本驗證 |
bind | 自訂伺服器 Socket 位址 |
encode | 編碼(通常會壓縮)回應 |
error | 觸發錯誤 |
file_server | 從磁碟提供檔案 |
forward_auth | 委派驗證給外部服務 |
handle | 指令的互斥群組 |
handle_errors | 定義處理錯誤的路由 |
handle_path | 類似於 handle,但會移除路徑前綴 |
header | 設定或移除回應標頭 |
import | 包含片段或檔案 |
invoke | 呼叫命名路由 |
log | 啟用存取/要求記錄 |
map | 將輸入值對應到一個或多個輸出 |
method | 內部變更 HTTP 方法 |
metrics | 設定 Prometheus 指標展示端點 |
php_fastcgi | 透過 FastCGI 提供 PHP 網站 |
push | 使用 HTTP/2 伺服器推送將內容推播給客戶端 |
redir | 對客戶端發出 HTTP 重新導向 |
request_body | 操作要求主體 |
request_header | 操作要求標頭 |
respond | 寫入硬編碼回應給客戶端 |
reverse_proxy | 強大且可擴充的反向代理 |
rewrite | 內部改寫要求 |
root | 設定網站根目錄的路徑 |
route | 一組指令,被視為單一單元 |
skip_log | 跳過對符合要求的存取記錄 |
templates | 在回應中執行範本 |
tls | 自訂 TLS 設定 |
tracing | 與 OpenTelemetry 追蹤整合 |
try_files | 依檔案是否存在而改寫 |
uri | 操作 URI |
vars | 設定任意變數 |
語法
每個指令的語法看起來會像這樣
directive [<matcher>] <args...> {
subdirective [<args...>]
}
<carets>
指示要替換為實際值的代幣。
[brackets]
指示選用參數。
省略符號 ...
指示繼續,也就是一個或多個參數或列。
除非另有說明,否則子指令通常是選用的,即使它們未出現在 [brackets]
中。
比對器
大多數(但並非全部)指令接受比對器代碼,讓您過濾要求。比對器代碼通常是選用的。如果您在指令的語法中看到以下內容,表示該指令支援比對器
[<matcher>]
由於比對器代碼的運作方式相同,因此為了減少重複,不會在每個頁面上描述比對器代碼的各種可能性。請改為參閱比對器文件,以取得語法的詳細說明。
指令順序
許多指令會操作 HTTP 處理器鏈。評估這些指令的順序很重要,因此預設順序已硬編碼到 Caddy 中。
您可以使用order
全域選項或route
指令來覆寫/自訂此順序。
tracing
map
vars
root
skip_log
header
copy_response_headers # only in reverse_proxy's handle_response block
request_body
redir
# incoming request manipulation
method
rewrite
uri
try_files
# middleware handlers; some wrap responses
basicauth
forward_auth
request_header
encode
push
templates
# special routing & dispatching directives
invoke
handle
handle_path
route
# handlers that typically respond to requests
abort
error
copy_response # only in reverse_proxy's handle_response block
respond
metrics
reverse_proxy
php_fastcgi
file_server
acme_server
排序演算法
為了便於使用,Caddyfile 適配器會根據下列規則對指令進行排序