3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

CIS(Cloud Internet Service): Host Header OverrideとResolve Overrideを使ったICOSアクセス

Last updated at Posted at 2020-03-19

1. はじめに

CISのPage Ruleには、Host Header OverrideResolve Overrideという機能があります。

  • Host Header Overrideは、L7レベルでHTTPヘッダ内のHOST情報を書き換えます。
  • Resolve Overrideは、L4レベルの接続先を変更します。

この具体的な挙動と仕組みを理解するために、CIS経由でICOS(IBM Cloud Object Storage)にアクセスする例を使ってその仕組みを説明したいと思います。

2. やりたいこと

まず、前提として既にこの記事に従って、東京リージョンのICOSにmybucket106という名前のbucketを作成し、認証なしでインターネットからアクセスできるようになっており、公開画像として100.jpgが存在するとします。この場合、その画像ファイルへのアクセスは

https://mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud/100.jpg

となります。でも、これだと自分のドメインを使っていないし、画像はキャッシュはされないし、扱いづらいですよね。そこで、CDN機能含めて豊富なインターネットアクセス用のサービスを提供しているCISを使ってアクセスするようにします。最終的には、CISで取得しているドメインを仮にcertest.tkとすると、このファイルに

https://image.certest.tk/100.jpg

でアクセスできるようにしようというのが今回の目標です。

3. 設定方法

設定方法に関しては簡単です。CISのResolve Override with COSというPage Rulesを使います。

3-1. Resolve Overrideを選択
image.png

3-2. Resolve Override with COSの設定

  • URL matchingとして、image.certest.tk/*にアクセスされた時のみこのPage Ruleが適用されるように指定。
  • 対象のICOSインスタンスおよびBucketを選択。
  • DNSのRecord nameとして、image.certest.tkが生成されるように指定。

image.png

3-3. Resolve Override with COSの内容

このPage Ruleを作成後に実際に作成された設定を確認すると、以下のように構成されていることがわかる。

image.png

  • Host Header Override-> mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
  • Resolve Override-> image.certest.tk

そして、DNSには以下のレコードがProxy=ONで作成されている。
(注意:現時点ではProxy=Offで作成されますが、これはバグです。Proxy=ONに変更してください)

image.png

CNAME: image.certest.tk -> mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud

これで、https://image.certest.tk/100.jpgにアクセスできるようになります。

4. 挙動の説明

4.1 ICOSへの直接アクセス時

https://mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud/100.jpgへの端末からのアクセスは以下のようになっています。

(L7)URL PATH /100.jpg
(L7)Host Header mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
(L4)接続先アドレス IPアドレス(mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloudIPを名前解決した結果)

4.2 CIS経由のアクセス時

4.2.1. ブラウザからのアクセス時

image.certest.tkの名前解決をすることで、CISのEdgeサーバーのIPアドレスが返ります(そのために、image.certest.tkのDNSレコードはProxy=ONになっている)。よって、このリクエストはCISを通るようになります。

(L7)URL PATH /100.jpg
(L7)Host Header image.certest.tk
(L4)接続先アドレス N/A

4.2.2. Host Header Overrideによる書き換え

(L7)URL PATH /100.jpg
(L7)Host Header mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
(L4)接続先アドレス N/A

4.2.3. Resolve Overrideによる書き換え

(L7)URL PATH /100.jpg
(L7)Host Header mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
(L4)接続先アドレス image.certest.tk

4.2.4. CNAMEによる名前解決

(L7)URL PATH /100.jpg
(L7)Host Header mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
(L4)接続先アドレス mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud

これでICOSへの直接アクセスの時と同じ情報に書き換わりました。これが最終的に名前解決されて、

(L7)URL PATH /100.jpg
(L7)Host Header mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloud
(L4)接続先アドレス IPアドレス(mybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloudを名前解決した結果)

となるわけです。

(参考)ちなみにL4での接続先アドレスを変更するのであれば、直接Resolve Overridemybucket106.s3.jp-tok.cloud-object-storage.appdomain.cloudに変更してしまえばいいのではないか・・・という疑問は誰でも浮かぶところです。しかし、Resolve Overrideでは別ドメインを設定することはできないようです。なので、いったんワンクッションを置いてCNAME経由にしたのですね。
image.png

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?