Caddyfile 指令
指令是出現在站點區塊中的功能性關鍵字。 有時,它們可能會開啟自己的區塊,其中可以包含子指令,但除非另有說明,否則指令不能在其他指令內使用。 例如,您不能在 file_server
區塊內使用 basic_auth
,因為 file_server
不知道如何進行身份驗證。 但是,您可以在特殊的指令區塊(如 handle
和 route
)中使用某些指令,因為它們專門設計用於將 HTTP 處理器指令分組。
以下指令是 Caddy 的標準配備,可用於 HTTP Caddyfile 中
指令 | 描述 |
---|---|
abort | 中止 HTTP 請求 |
acme_server | 嵌入式 ACME 伺服器 |
basic_auth | 強制執行 HTTP 基本身份驗證 |
bind | 自訂伺服器的 socket 位址 |
encode | 編碼(通常壓縮)回應 |
error | 觸發錯誤 |
file_server | 從磁碟提供檔案 |
forward_auth | 將身份驗證委派給外部服務 |
fs | 設定用於檔案 I/O 的檔案系統 |
handle | 互斥的指令群組 |
handle_errors | 定義處理錯誤的路由 |
handle_path | 類似 handle,但會移除路徑前綴 |
header | 設定或移除回應標頭 |
import | 包含程式碼片段或檔案 |
intercept | 攔截其他處理器寫入的回應 |
invoke | 調用具名路由 |
log | 啟用訪問/請求記錄 |
log_append | 將欄位附加到訪問日誌 |
log_skip | 跳過匹配請求的訪問記錄 |
log_name | 覆寫要寫入的記錄器名稱 |
map | 將輸入值映射到一個或多個輸出 |
method | 在內部變更 HTTP 方法 |
metrics | 配置 Prometheus 指標公開端點 |
php_fastcgi | 透過 FastCGI 提供 PHP 網站 |
push | 使用 HTTP/2 伺服器推送將內容推送到用戶端 |
redir | 向用戶端發出 HTTP 重定向 |
request_body | 操作請求 body |
request_header | 操作請求標頭 |
respond | 向用戶端寫入硬編碼的回應 |
reverse_proxy | 強大且可擴展的反向代理 |
rewrite | 在內部重寫請求 |
root | 設定網站根目錄的路徑 |
route | 一組被視為單一單位的指令 |
templates | 在回應上執行範本 |
tls | 自訂 TLS 設定 |
tracing | 與 OpenTelemetry tracing 整合 |
try_files | 取決於檔案是否存在的重寫 |
uri | 操作 URI |
vars | 設定任意變數 |
語法
每個指令的語法看起來都像這樣
directive [<matcher>] <args...> {
subdirective [<args...>]
}
<尖括號>
表示要替換為實際值的符號。
[方括號]
表示選用參數。
省略號 ...
表示延續,即一個或多個參數或行。
子指令通常是選用的,除非另有文件說明,即使它們沒有出現在 [方括號]
中。
匹配器
大多數(但非全部)指令接受匹配器符號,讓您可以過濾請求。 匹配器符號通常是選用的。 如果您在指令的語法中看到以下內容,則表示指令支援匹配器
[<matcher>]
因為匹配器符號的工作方式都相同,所以為了減少重複,不會在每個頁面上描述匹配器符號的各種可能性。 相反地,請參閱匹配器文件說明以取得語法的詳細說明。
指令順序
許多指令會操作 HTTP 處理器鏈。 這些指令的評估順序很重要,因此預設順序已硬編碼到 Caddy 中。
您可以使用order
全域選項或route
指令來覆寫/自訂此順序。
tracing
map
vars
fs
root
log_append
log_skip
log_name
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
basic_auth
forward_auth
request_header
encode
push
intercept
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 轉接器會根據以下規則排序指令