WordPressをAmazon CloudFrontで配信してついでにACM(AWS Certificate Manager)を使って常時SSL化する
2017/07/27
当サイトの500と502の発生状況がドイヒーであるとの苦情をいただきまして、Amazon CloudFrontで配信することにしました。
そのついでにACM(AWS Certificate Manager)使って常時SSL化にもしました。
こちら、WordPressサイトをCloudFrontで配信する
とこちら、WordPressとCloudFront連携時のリダイレクトループ解決方法
をものすごく参考にさせていただきました。
目次
ACM(AWS Certificate Manager)で証明書の発行
ACM(AWS Certificate Manager)の承認メールを受け取るためにAmazon SESを設定するをご確認ください。
CloudFrontの設定
[Create Distribution]をクリックします。
[Get Started]をクリックします。
[Origin Domain Name]にCloudFrontがアクセスするドメイン名を入力します。
検索エンジンとか、外部には公表しないドメイン名をAレコードとかで設定しておいてそれを入力します。
今回常時SSLにするので、[Redirect HTTP to HTTPS]にします。
Allow HTTP Methodsは GET,HEAD,OPTIONS,PUT,POST,PATCH,DELETEにして、
Whitelist HeadersでHostをホワイトリストに追加します。
TTLはデフォルトのまま86400(24時間)にしました。
このへんはデフォルトから何も変更してません。
Alternate Domain Names(CNAMEs)に検索エンジンや、外部に公開するドメイン名を入力します。
Custome SSL CertificateでACMで発行した証明書を選択します。
ロギングを有効にして任意のS3バケットを設定しました。
作成します。
作成後、[Behaviors]-[Create Behavior]から
「/wp-admin/」と「.php」をTTL 0(キャッシュしない)の設定を作成しました。
作成後、Domain Nameに設定された ~.cloudfront.net のドメイン名をAlternate Domain Names(CNAMEs)に設定したドメイン名のCNAMEにDNSサーバで設定します。
Route 53の場合はAliaseでOKです。
あと、エラーページで500,502が運悪く発生した場合は10秒でキャッシュを削除するようにしました。
WordPressの設定
SSL対応のための設定です。
wp-config.php
上の方に以下を記入
1 2 3 |
$_SERVER['HTTPS'] = 'on'; $_ENV['HTTPS'] = 'on'; |
wp-optionsテーブル
データベースのwp-optionsテーブルの
option_name in (‘siteurl’,’home’)
をSQLのupdateでhttpsのアドレスにしました。
Nginxの設定
confファイル(/etc/nginx/conf.dとかにありますが人によって設定はまちまちかと)
の
location/{}にhttp -> httpsのリダイレクトのために以下を追記しました。
1 2 3 4 |
if ($http_x_forwarded_proto = "http") { return 301 https://yourdomain.com$request_uri; } |
再起動です。
1 2 |
$ sudo service nginx restart |
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。

「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。

「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。

「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。

「AWSではじめるLinux入門ガイド」という本を書きました。


開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
Amazon CloudSearchからAmazon Elasticsearch Serviceへ変えました
全文検索をする必要がありまして、本当はCloudSearchを使い続けたいのです …
-
-
AWS Lambda Layersのアーカイブファイルをダウンロードする
Cloud9にLambda Layersをダウンロードしたかったので検索してみた …
-
-
JAWS-UG 大阪 関西女子合同 Amazon Personalizeハンズオンやってみました
久しぶりに大阪でJAWS-UGに参加です。 Amazon Personalize …
-
-
Amazon SES, S3で受信したメールをAWS Lambda, SESで別のメールへ転送する
Amazon SESでメール受信で受信したメールを、毎回S3バケットに見に行って …
-
-
Amazon S3バケットでMFA Deleteを有効にする
バージョニングが有効なバケットでバージョン削除でMFA Deleteを有効にして …
-
-
EC2インスタンスの起動で、–cli-input-jsonと–cli-input-yamlを使いました
AWS CloudShellから実行しました。 JSON実行 [crayon-6 …
-
-
特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)
やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …
-
-
Amazon Location Service入門ワークショップ-マップの操作
関連記事 Amazon Location Service入門ワークショップの前提 …
-
-
JAWS FESTA 2019 Sapporo 参加&当日スタッフ&企業サポーターで!
2019年のJAWS FESTA は札幌です! 今回もありがたいことに、所属して …
-
-
RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する
RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …