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 |
最後までお読みいただきましてありがとうございました!
【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。
【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。
【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。
【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター3年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
-
AWS Expert Online at JAWS-UG首都圏エリアに参加して「Amazon EC2 スポットインスタンス再入門」を聞いてきた
AWS Expert Onlineという勉強会がありまして、AWS ソリューショ …
-
-
webフォームからの問い合わせをRedmineに自動登録して対応状況を管理する(API Gateway + Lambda)
先日、検証目的で作成したRedmineの冗長化の一機能として、webフォームから …
-
-
AWS Client VPNを設定しました
ユーザーガイドのクライアント VPN の開始方法に沿ってやりました。 AWSクラ …
-
-
PyCharmにAWS CloudFormationプラグインをインストールして入力補完してみる
JetBrainsのPython統合開発環境(IDE)のPyCharmを1年ちょ …
-
-
AWS DeepLensセットアップの儀
AWS DeepLensのセットアップを開始します。 AWS DeepLensを …
-
-
EC2 Amazon Linux 2 にAmazon LinuxからWordPressを移行
このブログを新しいインスタンスに移行することにしました。 2015年5月にAma …
-
-
Amazon API GatewayのIAM認証の動作を確認しました
API GatewayのIAM認証は、IAMユーザーが実行できるように認証する、 …
-
-
Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました
過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …
-
-
AWS AmplifyでTodoアプリを作るハンズオンをやってみました
【お手軽ハンズオンで AWS を学ぶ】AWS Amplify で Todo アプ …
-
-
AWS Transit GatewayのAcceleratedサイト間VPN接続確認
Transit GatewayでVPN接続を作成するときに、Global Acc …