1

次のように私のセットアップは次のとおりです。AWS CloudFrontは+バランサーサブドメインをロードするためにバランサ、メインのドメインからURLの変更をロード

  1. ユーザーがexample.comブラウザ上
  2. 要求がHTTPをリダイレクトAWS CloudFrontは、に行きますHTTPSへ、及びロードバランサは、PHP Laravelフレームワークを実行
  3. EC2が正常
  4. Uに応答EC2インスタンスに要求を転送
  5. AWS弾性ロードバランサ(elb.example.com)に要求を転送SERは、ユーザーが任意のボタンに移動した場合このすべてが.....しかし、私が欲しいものを完全に

    • ある

彼に透明他のすべてでexample.comで正しくページを表示しますページのURLは、elb.example.comになります(example.comのままにしてください)

  • ページのソースを表示すると、ページの任意のボタンへのリンクはすべて、elb.exampleというベースURLを持ちます.com(example.comである必要があります)
  • 理由は、EC2がロードバランサからの要求を参照するため、ベースURLがelb.example.comであると仮定し、それに応じてすべてのリンクを生成するためです。

    どのようにしてEC2にベースURLがexample.comとして表示されますか?

    +0

    .htaccessの出力を貼り付けることはできますか?また、DBにURL "example.com"があり、elb.example.comでないことを確認しました – error2007s

    +0

    .htaccessはファイルです。ファイルを共有しますか? DBの意味を教えてください。あなたはデータベースを意味しますか?原因データベースは、私の意見ではこの問題とは何も関係ありません –

    +0

    OkハッチとDBについてあなたのウェブサイトのドメインはどこにありますか?それはCの名前かIPアドレスを使用していますか? – error2007s

    答えて

    4

    この現象は、デフォルトでCloudFrontがHost: HTTP要求ヘッダーを起点ホスト名(この場合はelb.example.com)に設定していることに起因する可能性があります。アプリケーションは、おそらくそのホスト名に基づいてリンクを生成します。

    代わりに、CloudFrontでそのヘッダーをホワイトリストに設定して、発信元に転送する場合、ブラウザ(example.com)から送信されたHostヘッダーはCloudFrontによってアプリケーションに送信されるため、アプリケーションはリンクを生成するときにその値を期待して使用します。これにより、CloudFrontは元のサーバーホスト名を使用して、起点(この場合はELB)へのTCP接続を確立するために必要なDNSルックアップを実行しますが、そのホスト名をHTTP要求ヘッダーに挿入することをやめます。

    http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesForwardHeaders

    +0

    偉大な答えをありがとう。私は今これをしようとしていると、あなたが結果を参照して更新されます –

    +1

    完璧に働いた。非常に有益な答えに感謝します。 –

    関連する問題