AWSのCloudFront入れたらメールフォームが動かなくなったの、なぁぜなぁぜ?
2023/07/22 (土) - 00:00 Server
AWSのEC2でメールフォームを構築しており正常に動いていたのですが、コンテンツ配信の高速化とSSL導入のためにCloudFrontを導入し、正常に動くようになったところまでは良かったのですが、肝心のメールフォームが動かなくなってしまいました。
今回はその解決の備忘録。
原因は、CloudFront経由でEC2(オリジン)にデータが通らなかったため
CloudFrontを導入すると、Webブラウザ→インターネット→CloudFront→EC2インスタンス(オリジン)と介してやり取りがなされます。CloudFrontのデフォルトだとセキュリティと高速化のため、CloudFront→EC2でPOSTパラメータが通らずメールフォームで不具合が起きていました。
そこでCloudFrontの設定を変更し、POSTパラメータを通るように設定します。まず、AWS マネジメントコンソールにログインしCloudFrontにアクセス。対象のディストリビューションを選択します。
[ビヘイビア]のタブをクリックし、[ビヘイビアを作成]ボタンをクリック。
- [パスパターン]で対象のパスを入力 例:/contact/*
- [オリジンとオリジングループ]で対象先のEC2を選択
- [ビューワープロトコルポリシー]はRedirect HTTP to HTTPSを選択
POSTパラメータを許可する
重要だったのがここで、HTTPメソッドでPOSTパラメータ等が許可されていなかったためでした。
- [許可された HTTP メソッド]でGET, HEAD, OPTIONS, PUT, POST, PATCH, DELETEを選択
- [キャッシュキーとオリジンリクエスト]でLegacy cache settingsを選択
- ヘッダー:[すべて]、クエリ文字列:[すべて]、cookie:[すべて]を選択。
以上の設定を行い[ビヘイビアを作成]ボタンをクリックで完了。これでCloudFront経由でオリジンにパラメータが通るようになります。最後に動作チェックしたら正常にメールフォームが動くようになりました。設計時に構造を考えてから作らないとだめですねぇ。
おしまい♥
おすすめ記事
- PHPでURLリライト(rewrite)を使ってみる
- ドメインのSPFレコードに複数のサーバを指定する
- さくらのレンタルサーバーでgitのリモートリポジトリを作成する
- macOSでローカルWebサーバを立ち上げ、ドキュメントルートを変更する
- SSHに接続したら WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! と出たときの対処
トラックバック & ピンバック
- この記事へのトラックバックURI:
- https://weblog.walk-life.me/aws_cloudfront_method/trackback/