質問: $_SERVER['HTTP_X_FORWARDED_FOR']; ``` ### 現在できていること 上記の設定でwww.example.comは表示できています。 X-Cache:Hit from cloudfrontも確認できております。 またAレコードの設定を以下のようにすることでexample.comでもアクセスができています。 ●example.com ●A-IPv4 address ●Alias Target:elbのアドレス example.comでのアクセスはヘッダ情報にX-Cacheが表示されておりませんので 当然ながらelbに直接アクセスしている状態だと思います。 ### 試したこと route53でリダイレクト、もしくはcloudfrontでリダイレクトをさせたいと思い ``` cloudfrontで試した設定 Cache Behavior SettingsのWhitelist Headersに 「host」「example.com」等を加えてみました ``` がブラウザで確認すると上記のエラーが出ておりました。 また妥協案としてexample.comにアクセスが来た場合は オリジン(nginx)からリダイレクトさせようとnginxに以下の設定をしてみました。 ``` ◆nbinx confファイル server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } ``` 結果はリダイレクトループが発生してしまいます。 example.com,www.example.com共にエラーになりました。 ### 現在の疑問点 ・色々調べている時にroute53→s3の構成でs3でリダイレクトさせるという情報がいろいろ出てきましたがroute53でのリダイレクトはできないということでしょうか。 ・cloudfrontでリダイレクトする情報も検索している時にhttp://www.example.comとhttp://example.comとhttps://example.comをhttps://www.example.comにリダイレクトするのはcloudfront設定画面のViewer Protocol PolicyのRedirect HTTP to HTTPSを選択すればできそうなこと(←できるのでしょうか?体験談などお聞かせいただければ嬉しいです。)は分かりましたが今回のようにhttpsが絡まないリダイレクトはどのように設定すればできるのでしょうか。
回答: まず、Route53はDNSのサービスなのでHTTPリダイレクトする機能はありません。 CloudFrontの「HTTP to HTTPS」は https 通信を強制するためのもので ご希望のものとは違うきがします。 というわけで、オリジンの nginx でリダイレクトするのが良いでしょう。 ※より AWS っぽくやるなら S3 で リダイレクトするのもアリだと思いますよ。 リダイレクトループは正しく設定すれば回避できると思います。 次のようにバーチャルホストを2つ記述すればどうでしょうか。 ``` # nginx.conf server { listen 80; server_name example.com; return 301 http://www.example.com$request_uri; } server { listen 80; server_name www.example.com; ... } ``` つぎに、CloudFrontのAlternate Domain Name にワイルドカードを使って書いてますが、サブドメインの無い example.com はマッチしないんじゃないでしょうか。 example.com を追加してみるとどうでしょう。 ``` *.example.com example.com ←追加 ```