WordPressサーバーの前にロードバランサーを置く際の注意点と解決方法

WordPress

今回はWordPressサーバーの前にロードバランサーを置く際の注意点を記載する。

経緯

AWSを使用してWordPressサーバーを構築することになった。

その際、WordPressでHTTPSへのリダイレクト設定を行うと無限にリダイレクトが発生してしまい画面が表示されなかった。

構成と原因

使用サービス

AWS:ALB、EC2

原因

ALBとEC2の間の通信プロトコルがHTTPだったため、WordPressがHTTPSへリダイレクトをする。

クライアントとALBの間はHTTPSであるが、WordPressに届く通信がHTTPであるため、無限にHTTPSへリダイレクトさせるので、画面に表示されない。

解決策

解決策1.HTTP_X_FORWARDED_PROTOを見る

ロードバランサーを経たリクエストが各サーバーに分散される時、リクエストヘッダーにHTTP_X_FORWARDED_PROTOという項目が付与される。これは、クライアントとロードバランサーの間の通信プロトコルが格納されており、リダイレクトを実行するか否かの検証を行う際にこの項目を見るようにすることで、ALBからWordPressサーバーへの通信プロトコルではなく、クライアントからALBの通信プロトコルによってリダイレクトを実施することができる。

具体的な方法は下記。

SSL対応後のWordpress管理画面で発生した無限リダイレクトループの修正方法 - Qiita
WordpressでSSL対応させました。サイトアクセスの速度を上げようと、NginxでProxyキャッシュを効かせています。サイトへのアクセスは問題なくできましたが、管理画面にアクセスすると無限…

ただ、これだとターゲットグループのヘルスチェックが通らないため、既存のWordPressを移管するとき以外はあまりお勧めできない。

解決策2.WordPressのHTTPSリダイレクトをやめる

2つ目の解決策としてはWordPressによるHTTPSリダイレクトをやめること。クライアントからのリクエストをHTTPSに強制するためにはALBを使用する。

これによってユーザーとサーバーの間は暗号化された通信が担保されるので、一番シンプルであると考える。

解決策3.プライベート証明書を自己証明書を使用する

最後はALBとEC2の間をHTTPS通信にする方法。クライアントとサーバー間だけでなく、プライベートネットワーク内でも通信を暗号化したい場合に使用する。

とはいえ、プライベートなサーバーなので通常のACMによる証明書の発行ではなく、プライベート証明書か自己証明書を作成する方法である。

因みにこの方法は実践したことないがないので、大体ここらへんの知識を合わせればいけるんじゃないかという記事を残しておく。

ApplicationLoadBalancer(ALB)の自己証明書を用いたHTTPS化 - Qiita
概要ALBの利用においてHTTPS化を行うための方法。ALBのDNS名と同名の自己証明書を作成し、ACMへインポート。後、ALBに適用すればできると想定。前提構成は以下の通り。構成のポイン…

タイトルとURLをコピーしました