MagentoでSSLをロードバランサーで復号化したい場合の設定方法
この記事は公開から 1年以上が経過しています。現在の最新情報との整合性については弊社では一切の責任を負いかねます。
Magentoで一定規模以上のサイトを運用する場合、複数台のWebサーバーを使用することになります。
もしくは運用方針として、サイトをダウンさせたくない場合はアクセス数が多くなくても、複数台のWebサーバーを使用することがあります。
このような場合、「MagentoのセッションとキャッシュをRedisに保存する」や「Magentoの画像ファイルをデータベースを使用して複数のWebサーバでシェアする」でご紹介したような方法を使いながら、Webサーバーを単純に増やせば良い形にサイトを作り替えていきます。
そして、複数台のWebサーバーに均等にアクセスを振り分けるためにロードバランサー(負荷分散装置)を導入します。
このエントリでは、Magentoとロードバランサーを組み合わせて利用する場合に、SSLによる暗号化を解除する方法を解説します。
ロードバランサーとは
ロードバランサーとは、日本語では負荷分散装置と呼ばれています。技術者の間ではLBと略されることがあります。
一般的には訪問者のアクセスを一手に受け付け、配下に接続されているWebサーバーにアクセスを振り分けます。
アクセス(負荷)を分散する装置なので負荷分散装置というわけです(英語で負荷はloadといいます)。
一般的にロードバランサーは以下のような形のネットワーク構成を取ります(スイッチなどは省略しています)。
SSL暗号化・復号化のオーバーヘッド
さて、ロードバランサーが無事に導入できたとします。
ロードバランサーにも幾つかあり、SSLの暗号化・復号化ができるものとそうでないものがあります。
一般的にSSL通信は、普通のHTTP通信に比べて暗号化と復号化の処理の分だけサーバーに負荷をかけます。
この負荷はアクセスの多いWebサイトほど重くのしかかってくるためアクセスの多いサイトでは、アプリケーションの処理をするサーバーと、SSLの暗号化・復号化を行うサーバーを分ける必要が出てきます。
SSLアクセラレーターとは
SSLアクセラレーターとは、SSLの暗号化と復号化を専門に行う装置のことです。
特別なハードウエアである必要はなく、普通のサーバーでも代用できます。
ロードバランサーにこの機能が含まれていることがあり、ロードバランサーと同義語として使われることもあります。
最近ではクラウドサービスの一部として、SSLアクセラレーター機能を有するロードバランサーが提供されていることがあり、簡単な設定で利用できるようになっています。
もちろん、アプライアンスとしてのSSLアクセラレーターは従来通り販売されていますし、オープンソースソフトウエアの、
- Apache
- Nginx
- Pound
- Squid
などをSSLアクセラレーターのアプライアンスを代替するために利用することがあります。
Magentoでよくあるトラブル
さて、MagentoでSSLアクセラレーターをネットワーク上に設置すると、そのままではトラブルが起きます。
というのも、MagentoはアクセスしてきたクライアントがHTTP(80番)なのか、HTTPS(443番)なのかをチェックしていて、それに合わせてページのリダイレクトを行うことがあります。
代表的な例としては、
- ログイン画面
- 会員登録画面
- マイページ
- チェックアウト画面
などがあります。
これらのページではSSLが有効な場合に、非SSLのURLでアクセスしてきたクライアントは、自動的にSSLページにリダイレクトされてしまいます。
この結果、無限にリダイレクトがループすることになります。
対処方法
この現象はMagentoがSSLのリクエストを判断する基準として、サーバー変数の「HTTP」が「on」または「off」であるかをチェックしていることに起因しています。
そのため、SSLアクセラレーター経由のSSLページをMagentoの動いているサーバーに引き渡す際に、サーバー変数としてセットしてやることが必要です。
Apacheの場合は以下のように書きます。Nginxなどの場合は少し変わってくると思います。
SetEnvIf X-Forwarded-Proto https HTTPS=on
また、SSLアクセラレーター側では「X-Forwarded-Proto」がアプリケーションサーバー側に送信されるように、HTTPヘッダーの調整が必要になります。
この設定を忘れると、SSLアクセラレーターを入れた途端にSSLページにアクセスできなくなるという現象に陥ります。
ですが、アプリケーションの改修をせずに、ちょっとした設定変更だけで回避できますので、SSLアクセラレーターを導入する際には、忘れずに設定をしてください。
- お知らせ (34)
- Magento Open Source (169)
- Adobe Commerce (86)
- Magentoトピックス (349)
- Magentoバージョンアップ (11)
- OroCommerce (1)
- AkeneoPIM (16)
- Shopware (26)
- 世界のプライバシー保護規制 (11)
- OroCRM (14)
- Typo3 (9)
- イベント (27)
- Mage-OS (1)
- エクステンションリリース情報 (75)
- Mautic (1)