文件
a 專案

import

包含 片段 或檔案,並以片段或檔案的內容取代此指令。

此指令是一個特例:它會在解析結構之前評估,並可出現在 Caddyfile 的任何位置。

語法

import <pattern> [<args...>]
  • <pattern> 是要包含的檔案名稱、glob 模式或 片段 名稱。它的內容會取代此行,就好像該檔案的內容從一開始就出現在這裡。

    如果找不到特定檔案,則會產生錯誤,但空的 glob 模式不會產生錯誤。

    如果要匯入特定檔案,則該檔案為空時會發出警告。

    如果模式是檔案名稱或 glob,它總是相對於 import 出現的檔案。

    如果使用 glob 模式 * 作為最後的路徑區段,則會忽略隱藏檔案(即以 . 開頭的檔案)。若要匯入隱藏檔案,請使用 .* 作為最後的區段。

  • <args...> 是傳遞給匯入代碼的引數選用清單。此佔位符是一個特例,它會在 Caddyfile 解析時間評估,而不是在執行時間評估。它們可以用各種形式,類似於 Go 的切片語法

    • {args[n]} 其中 n 是參數的 0 為基底的位置索引
    • {args[:]} 其中插入所有參數
    • {args[:m]} 其中插入 m 之前的參數
    • {args[n:]} 其中插入從 n 開始的參數
    • {args[n:m]} 其中插入介於 nm 之間範圍的參數

    對於插入多個標記的格式,佔位符必須本身是一個標記,它不能是另一個標記的一部分。換句話說,它周圍必須有空格,且不能在引號中。

    請注意,在 v2.7.0 之前,語法為 {args.N},但此格式已被棄用,取而代之的是上述更靈活的語法。

範例

匯入相鄰的 sites-enabled 資料夾中的所有檔案(隱藏檔案除外)

import sites-enabled/*

使用匯入參數匯入設定 CORS 標頭的片段

(cors) {
	@origin header Origin {args[0]}
	header @origin Access-Control-Allow-Origin "{args[0]}"
	header @origin Access-Control-Allow-Methods "OPTIONS,HEAD,GET,POST,PUT,PATCH,DELETE"
}

example.com {
	import cors example.com
}

匯入將代理上游清單作為參數的片段

(https-proxy) {
	reverse_proxy {args[:]} {
		transport http {
			tls
		}
	}
}

example.com {
	import https-proxy 10.0.0.1 10.0.0.2 10.0.0.3
}

匯入將代理與前置重寫規則作為第一個參數建立的片段

(proxy-rewrite) {
	rewrite * {args[0]}{uri}
	reverse_proxy {args[1:]}
}

example.com {
	import proxy-rewrite /api 10.0.0.1 10.0.0.2 10.0.0.3
}