Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
OrganizationAdvent CalendarQiitadon (β)
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?


More than 1 year has passed since last update.

WEBアプリケーションの前段に CDN として CloudFront を使っているとスマホ判定やhttps判定でCloudFront用の特別設定を開発者側にしてもらう必要がある。

具体的には User-Agent が取れない代わりに CloudFront-Is-Mobile-Viewer, CloudFront-Is-Tablet-Viewer, CloudFront-Is-Desktop-Viewer, CloudFront-Is-SmartTV-Viewer などを見るようにする。
また、一般敵なProxyを経由したときのhttps判定では X-Forwarded-Proto を見るところ、CloudFront では CloudFront-Forwarded-Proto というヘッダを見てやる必要がある。

で、多くのアプリでは User-Agent 判定に iPhone/iPad などの文字列が含まれているかを使っており、またhttps判定では ${HTTPS} =on または標準的な X-Forwarded-Proto ヘッダ辺りを見ているものがおおい。そしてCloudFrontのヘッダに対応しているものは少ない。
なので、CloudFrontのヘッダを見つけたら、対応されていることが期待できる User-AgentX-Forwarded-Proto ヘッダを擬似ってやることでアプリケーション開発者/デプロイ作業者の作業を少し減らしてやろう。というのが本エントリの趣旨です。


で、以下のような設定を httpd.conf に書いておいてあげることで、php や .htaccess などのアプリケーション側では普通のWEBサーバにデプロイされたときと同じように User-Agent や X-Forwarded-Proto を見て判定すれば、それらのヘッダについて特別 CloudFront の存在を意識する必要はなくなる。

# アプリ側でCloudFrontスペシャルのスマホ判定をしなくてよいようヘッダを書き換える
SetEnvIf CloudFront-Is-Mobile-Viewer true is-mobile
SetEnvIf CloudFront-Is-Tablet-Viewer true is-tablet
RequestHeader set User-Agent "Amazon CloudFront (iPhone)" env=is-mobile
RequestHeader set User-Agent "Amazon CloudFront (iPad)" env=is-tablet
# アプリ側でCloudFrontスペシャルのhttps判定をしなくてよいようヘッダを書き換える
SetEnvIf CloudFront-Forwarded-Proto https is-https HTTPS=on
RequestHeader set X-Forwarded-Proto https env=is-https


Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away


No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
Help us understand the problem. What is going on with this article?