import
スニペットまたはファイルをインポートして、このディレクティブをスニペットまたはファイルの内容で置き換えます。
このディレクティブは特殊なケースです。構造が解析される前に評価され、Caddyfileのどこにでも配置できます。
構文
import <pattern> [<args...>]
-
<pattern> は、インポートするスニペットのファイル名、グローバルパターン、または名前です。その内容は、そのファイルの内容を最初からここに表示したかのように、この行を置き換えます。
特定のファイルが見つからない場合はエラーになりますが、空のグローバルパターンはエラーではありません。
特定のファイルをインポートする場合、ファイルが空の場合に警告が出力されます。
パターンがファイル名またはグローバルパターンの場合、それは常に
import
が表示されるファイルに相対的です。最後のパスセグメントとしてグローバルパターン
*
を使用する場合、隠しファイル(つまり.
で始まるファイル)は無視されます。隠しファイルをインポートするには、最後のセグメントとして.*
を使用します。 -
<args...> は、インポートされたトークンに渡す引数のオプションのリストです。このプレースホルダーは特殊ケースであり、ランタイム時ではなく、Caddyfileの解析時に評価されます。これらは、Goのスライスの構文と同様に、さまざまな形式で使用できます。
{args[n]}
ここでn
はパラメータの0からのインデックス{args[:]}
ここで、すべての引数が挿入されます。{args[:m]}
ここで、m
より前の引数が挿入されます。{args[n:]}
ここで、n
から始まる引数が挿入されます。{args[n:m]}
ここで、n
とm
の間の範囲の引数が挿入されます。
多くのトークンを挿入する形式の場合、プレースホルダーはトークン自体でなければならず、別のトークンの部分ではありません。言い換えれば、スペースで囲まれており、引用符で囲むことはできません。
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
}