HTTP リクエストとレスポンスのヘッダー追加・変更
Last updated August 16, 2018
HTTP ヘッダーは、HTTP (Hypertext Transfer Protocol) のリクエストおよびレスポンスメッセージのヘッダー部分を構成する要素で、HTTP トランザクションの動作を規定します。ヘッダーを作成して設定することにより、ユーザーに対してそのコンテンツをどのように提供するかを指定できます。ヘッダーの追加と編集の方法を以下に説明します。
新しいヘッダーの作成
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Content のリンクをクリックし、Content 設定画面を開きます。
-
Create header ボタンをクリックし、Create a header 設定画面を開きます。
-
以下の要領で Create a header 設定画面の各フィールドに入力します。
- Name フィールドに、ヘッダールールの名前を入力します (例:
My header
)。 - Type メニューから Request を選択し、続いてAction メニューから Set を選択します。
- Destination フィールドに、このルールを適用するヘッダー名を入力します。 * Source フィールドに、そのヘッダーに設定される値を入力します。
- すでにヘッダーが存在する場合にその内容を変更するなら、Ignore if set メニューから No を選択します。既存のヘッダーを変更しない場合は Yes を選択してください。
- Priority フィールドに、ヘッダールールを実行する順番を入力します。
下記の各フィールドの説明にて指定内容それぞれについて詳しく説明します。
- Name フィールドに、ヘッダールールの名前を入力します (例:
- Create ボタンをクリックします。
- Activate ボタンをクリックしてサービスをデプロイします。
ヘッダーの編集
- Fastly コントロールパネルにログインし、Configure のリンクをクリックします。
- サービスメニューから設定対象のサービスを選択します。
- Edit configuration ボタンをクリックし、Clone active を選択すると設定画面が開きます。
- Content のリンクをクリックし、Content 設定画面を開きます。
-
変更対象のヘッダー名をクリックすると Edit this header 設定画面が開きます。
-
以下の要領で Edit this header 設定画面の各フィールドに入力します。
- Name フィールドに、ヘッダールールの名前を入力します (例:
My header
)。 - Type メニューから Request を選択し、続いてAction メニューから Set を選択します。
- Destination フィールドに、このルールを適用するヘッダー名を入力します。
- Source フィールドに、そのヘッダーに設定される値を入力します。
- すでにヘッダーが存在する場合にその内容を変更するなら、Ignore if set メニューから No を選択します。既存のヘッダーを変更しない場合は Yes を選択してください。
- Priority フィールドに、ヘッダールールを実行する順番を入力します。
- Name フィールドに、ヘッダールールの名前を入力します (例:
- Update ボタンをクリックします。
- Activate ボタンをクリックしてサービスをデプロイします。
各フィールドの説明
以下の表では、Header 設定画面の各フィールドについて説明します。
フィールド | 説明 |
---|---|
Name | Name フィールドは、特定のヘッダールールを識別するための文字列を指定します。 |
Type | Type メニューは、Request、Response、またはCacheに設定できます。Request を選択すると、ユーザーからのリクエストが変更され、その変更内容はオリジンサーバーへのリクエストにも及びます。Response を選択すると、ユーザーへ返す HTTP レスポンスが変更されます。Cache を選択すると、オリジンサーバーからの HTTP レスポンスが、Fastly サーバー上でキャッシュされる前に変更されます。この変更はキャッシュからの配信にも及びます。 |
Action | Action メニューは、Set、Append、Delete、Regex、Regex Allのいずれかに設定できます。デフォルトの Set を選択すると、指定したヘッダーに値を設定します (当該ヘッダーがすでに存在している場合は、値を上書きします)。Append を選択すると、指定したヘッダーの末尾に値を追加します (ヘッダーが存在しない場合は、Set 相当の動作となります)。Delete を選択するとヘッダーを削除します。この場合、Header 設定画面の Source フィールドは非表示となります。Regex を選択すると文字列の検索・置換が可能です。Header 設定画面には検索文字列を指定する Regex コントロールと、置換文字列用の Substitution コントロールが表示され、正規表現が利用できます。Regex All を選択すると Regex と同じ機能を使用できますが、複数回の検索・置換が可能な点が異なります。この選択時には、Header 設定画面には Regex および Substitution コントロールが表示されます。 |
Destination | Destination フィールドは、Action の設定内容が適用されるヘッダー名を指定します。ヘッダールールは HTTP ヘッダー以外にも適用できるので、HTTP ヘッダーを操作する場合には、このフィールドの入力内容は次の形式にする必要があります。形式: http.Header-Name |
Source | Source フィールドは、Set、Append、Regex、および Regex All のアクションを選択すると表示されます。Action メニューで Delete を選択すると、このフィールドは Header 設定画面から非表示となります。Source フィールドはヘッダーに設定する値の参照元を指定しますが、数多くの選択肢があります。最も簡単なのが、"My Static String" といった固定文字列です (引用符が必要)。その他に、client.ip 、req.http.Another-Header 、client.geo.city などがあります。一覧は、下記の主要な情報の参照元を参照してください。 |
Regex | Regex フィールドは、Action メニューで Regex または Regex All を選択した場合のみ Header 設定画面に表示されます。このフィールドを使用すると、入力した正規表現に基づいて文字列の検索と置換を行うことができます。 |
Substitution | Substitution フィールドは、Action メニューで Regex または Regex All を選択した場合のみ Header 設定画面に表示されます。このオプションは、正規表現によって削除されたテキストを Substitution フィールドに入力したテキストに置き換えます。 |
Ignore if set | デフォルトでは、このフィールドは No に設定されています。これは、変更しようとするヘッダーがすでに存在する場合、そのヘッダーを変更することを意味します。 |
Priority | Priority フィールドは、ヘッダールールを実行する順番を決定します (例えば、このフィールドを 1 にすると、そのヘッダールールが最初に実行されます)。最初にいくつかのヘッダを設定して、それらに基づいてさらに他のヘッダを設定する場合は、このフィールドが重要になります。 |
主要な情報の参照元
名前 | 有効なタイプ | 説明 |
---|---|---|
req.http.Fastly-Client-IP |
Request, Cache, Response | 本当のクライアント IP アドレス。 |
client.ip と client.identity |
Request, Cache, Response | クライアント IP アドレス。これらの変数は常に参照可能ですが、ソース IP アドレスを表示しているとは限りません。例えば、オリジンシールドが有効な場合、エッジノードの IP となることがあります。 本当のクライアント IP アドレスを参照するには、req.http.Fastly-Client-IP を用いてください。重要: クライアント IP データは機密情報として扱われることがあります。機密の IP アドレス情報を転送・保管する場合には適切に処理してください。 |
server.identity |
Request, Cache, Response | リクエストを処理している Fastly サーバーの一意の識別子。 |
server.region |
Request, Cache, Response | Fastly サーバーのある地域。 |
server.datacenter |
Request, Cache, Response | Fastly サーバーのあるデータセンター。 |
req.url |
Request, Cache, Response | クライアントから送られた HTTP リクエストの URL。 |
req.http.* |
Request, Cache, Response | HTTP リクエスト内のヘッダーの値。形式: req.http.HeaderName |
beresp.status |
Cache | オリジンサーバーから返されるステータスコード。 |
beresp.http.* |
Cache | オリジンからの HTTP レスポンス内のヘッダーの値。形式: beresp.http.HeaderName |
resp.status |
Response | クライアントへ返されるステータスコード。 |
resp.http.* |
Response | クライアントへ返される HTTP レスポンス内のヘッダーの値。形式: resp.http.HeaderName |
client.geo.* |
Request, Cache, Response | クライアント IP に関する地理情報 (詳細は地理情報に関する記事を参照のこと)。 |