VCLスニペットで可能です。
以下にVCLスニペットのサンプルを記載します。
実際の動作につきましては、お客様の責任にて十分に検証を行っていただいた上で、実施いただく必要がございます。
- VCLスニペット1つ目(許可するIPアドレスの設定)
配置場所:最上部
acl adminip {
# 許可するIP一覧
"localhost";
"210.xxx.yyy.zzz";
"192.168.10.0"/24;
}
- VCLスニペット2つ目(IPアドレス制御例)
配置場所:指定(recv)
# ヘッダーの偽造がされないようにクライアントIPで上書き
if (fastly.ff.visits_this_service == 0 && req.restarts == 0) {
set req.http.Fastly-Client-IP = client.ip;
}
# 特定のIPアドレスのみ動作して、それ以外は何もさせたくない
if (!(req.http.Fastly-Client-IP ~ adminip)) {
error 403 "Access Denied";
}
# ヘッダーの偽造がされないようにクライアントIPで上書き
if (fastly.ff.visits_this_service == 0 && req.restarts == 0) {
set req.http.Fastly-Client-IP = client.ip;
}
# 特定のURLが含まれる場合、指定IPアドレスのみ許可する
if (req.url ~ "/wp-admin/" && !(req.http.Fastly-Client-IP ~ adminip)) {
# 上記はURLに/wp-admin/が入っているとき、特定IPのみ許可
error 403 "Access Denied";
}
# ヘッダーの偽造がされないようにクライアントIPで上書き
if (fastly.ff.visits_this_service == 0 && req.restarts == 0) {
set req.http.Fastly-Client-IP = client.ip;
}
# 特定IPアドレスからのみPURGEを許可
if (req.request == "FASTLYPURGE" && !(req.http.Fastly-Client-IP ~ adminip)) {
error 403 "Access Denied";
}
注意事項)
・上記例の場合、1と2の両方の設定が必要です。
・2は、お客様のご運用によって「すべて」もしくは「必要な記述のみ」を設定してください。(複数を設定される場合、重複している内容は1回のみの記載で問題ございません。)