TLS 終端
最終更新日 2018-10-03
TLS 終端されたリクエストの識別
キャッシュのパフォーマンスを最適に保つため、Fastly ではキャッシュエンジンとは別に TLS ターミネーターを使用しています。しかし、これでは元々 TLS リクエストであったことをキャッシュエンジンは識別できません。そのため、Fastly はお客様のサーバーからコンテンツを取得する際に Fastly-SSL
ヘッダーを設定しています。
このヘッダーが設定されているため、以下のようにすることでバックエンドでその存在を確認することができます。
1
2
3
if (req.http.Fastly-SSL) {
set resp.http.X-Is-SSL = "yes";
}
これにより、リクエストが TLS リクエストかどうかが分かります。
WordPress を使用する場合
Fastly TLS サービスを WordPress で使用している場合、WordPress が CSS や JS アセットの URL を正しく構築できるよう HTTP_FASTLY_SSL
ヘッダーのチェックを追加することをお勧めします。そのためには以下のように wp-config.php
ファイルにチェックを置き、後でチェックされる SSL フラグをオーバーライドするようにします。
1
2
3
if (!empty( $_SERVER['HTTP_FASTLY_SSL'])) {
$_SERVER['HTTPS'] = 'on';
}
通常どおり、これは wp-settings.php
の require_once
行の前のどこかに置かなければなりません。
TLS 終端使用時に元の IP アドレスを特定する
Fastly はパフォーマンス向上のため、キャッシュエンジンとは別に TLS ターミネーターを使用しており、復号化されるとオリジンサーバーへの再リクエストによりエンジンが元の IP アドレスを一時的に上書きし、元の IP アドレスを参照するものはすべて 127.0.0.0/8 の IP アドレス として表示されます。以下のようにして VCL で元の IP アドレスを特定することができます。
- オリジンシールドを使用している場合は
req.http.Fastly-Client-IP
を使用します - オリジンシールドを使用しない場合や ACL を構築している場合は
client.ip
を使用します
また Fastly はクライアント IP アドレスを Fastly-Client-IP
の HTTP ヘッダーでオリジンに送信し、サーバーソフトウェアはこれを使用して必要に応じて調整することができます。