TLS 終端

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.phprequire_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 ヘッダーでオリジンに送信し、サーバーソフトウェアはこれを使用して必要に応じて調整することができます。

Back to Top