wordpressはAWSで二台構成で運営する場合、
CloudfrontとALBを挟むとマジで辛い経験をされた方は多いのではないでしょうか。

例えば😜

・ビジュアルエディターモードが出ない
・リダイレクト問題
・Cloudfrontのキャッシュでwordpressのダッシュボードが死んでプレビューがTOPに戻る
・ALB設定ミスでwordpressダッシュボードにログインできない

などなど。。そこらへん初めて構築してハマることがないように今回はブログします。


■構成

動きとしてはユーザ→Cloudfront(443)→ALB(80)→EC2(80)なので、
証明書はACMを使ってクラフロのみ443にし、内部は80で返してます。
もちろんwordpressのダッシュボードもCloudfront経由でアクセスする想定です。
※web01のwordpressコンテンツはrsyncでweb02に毎分rsyncで上書きしてます。


■wp-config.php

・wordpressの仕様について
CloudfrontからALBにアクセスすると80→443に対応(プロキシ変換)していないため、
コンテンツ等型ずれが起きます。強制的にそうならないよう上記をwp-config.phpに直接書きます。


■ALB(Load Balancer)

ロードバランサーはもちろん分散しているため、
デフォルトはブラウザでwordpressを編集する(ダッシュボード)と
二台目(web02)にもアクセスしてしまう。(ログインしたのにログアウトされてしまう)
ロードバランサ上の設定を変更して/var/www/html/wp/配下は一台目(web01)のみアクセスしないようにします。

・一台目(web01)を指すターゲットグループを作成

・既存のリスナーから「ロードバランサ」-「ルールの表示/編集」

・各ルールの追加

これでALBは問題ないはず!


■Cloudfront

・Behavior

上から見ていきましょう。
基本wp-admin、wp-login.php、*phpはマストでキャッシュ0にします。
記事書いてプレビューすると何故かログアウトされTOPページにリダイレクトされるので注意しましょう。
もしくはログインができません。
さらにCloudFrontからアクセスした場合、User-agent「Amazon CloudFront」で書き換えられます。
PCからのアクセスでないと判定されビジュアルエディタモードがOFFになってしまうため上記のようにホワイトリストを追記します。
Defaultはちゃんとキャッシュするように!

・Hit from cloudfront

curlコマンドでキャッシュ聞いてるか確認できるのでやってみると良いでしょう。
ちゃんとadachin.comはx-cache: Hit from cloudfrontになっていることが分かります。
※ちなみにドメインは適当


■まとめ

wordpressめ!
と言いたいところですが、2台構成で究極な負荷分散を実現できます。
これら設定漏れあると死んでしまうのでterraformで全てコード化すると良いですね😁

参考
https://qiita.com/Ichiro_Tsuji/items/38592e737257cb45ca13

カテゴリー: AWSWordpress

あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニア勉強会なども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなそうと奮闘中である。

2件のコメント

竹田 · 2018/10/17 1:54 pm

まさに下記の二件で困っていたところ、記事を拝見しました。
・リダイレクト問題
・ALB設定ミスでwordpressダッシュボードにログインできない

これら問題を、記事内のALB(Load Balancer)を見ながら設定したところ、無事に解決できました。
ほんとうにありがとうございました。
ネットの海を巡回しても、リダイレクトの原因が多すぎて、にっちもさっちも行かないところでしたので。

    あだちん · 2018/10/18 6:53 pm

    マジですか!!手助けできてよかったです!!

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください