Blog

ブログ

ECサイトへの一時的なアクセス増をしのいだ話

はじめに

弊社にて担当させて頂いているお客様がテレビ番組にて紹介される!という事で、どうやってアクセスを捌くかどうかが話題となりました。 結果的に、アクセス数は平常時の120倍くらいでしたが無事に乗り切ることができました!やはり、テレビの影響力というものは相当なものですね。

お客様の要望

  • 取り扱われる番組はtoB向けだが、対象のECサイトはtoC向けなので機会損失はあまりない。
  • だが、正確なテレビの特集効果を測定をするために、サーバへの過負荷によって、落ちないように可能な限りの対応を検討したい。
  • よってなるべく安いコスト・少ない工数でできることをやる、

という形でした。

対応内容

小規模サイトということもあり、スケールアウトしづらい構成でした。
(DBもWebサーバも画像もセッションも1インスタンスに全部入り!)

そのため、オートスケール等ではなく、TV放映前に一旦サービスを落としてインスタンスの入れ替えをしています。具体的には、vCPU数48倍、メモリ容量48倍にAWSのインスタンスを変更しただけですが、最大アクセス時にも動作サクサクのまま乗り切れました。小規模なサイトならスケールアップだけでもある程度なんとかなる、という事例となりました!

まとめ

弊社でも、現状のクラウドサービスには多くの便利なサービスがあり、お客様に貢献できる効果が見込めるサービスはどしどし使っていきます。一方でこの様に簡単かつ大きなコストをかけずに対応する柔軟性も大切ですね!

AWSでWordPressの管理画面にログインできない

AWSでWordPressを構築する場合に行ったHTTPSのトラブルシュート

初めまして。Joolenで修行中の修行僧 おおたに です。修行のために頭を丸めました。

突然ですが、AWSでWordPressを構築する場合に行ったHTTPSのトラブルシュートについて、全世界に向けて絶賛公開いたします!!
(もったいぶらないで、回答からいくスタイルです)

[現象]

・Amazon EC2にWordPressをインストールすると管理画面でログインできない。
または、管理画面自体が表示されない。

[環境]

・サーバー:Amazon EC2

・外部からはELB(ロードバランサー)へHTTPSでアクセス

・ELBからEC2へはHTTPでアクセス

[解決策]

次の2点(1.と2.)を実施します。
セキュリティに関する設定になりますので、ご使用は自己責任でよろしくお願いいたしますm(_ _)m

1. WordPressの URL設定を変更する

<①ELBのHTTPS制限を一時的に無効にしても構わない場合>

HTTPS制限を解除すれば、WordPress管理画面へHTTPアクセスできます。管理画面へログインし、[設定]で次の2点を変更します(「WordPressのURL」は各自の環境に合わせて変更してください)

  • WordPress アドレス(URL):https://WordPressのURL
  • サイトアドレス(URL):https://WordPressのURL

変更が終わったら、解除していたHTTPS制限を元に戻すのをお忘れなく

<②ELBのHTTPS制限を無効にできない場合>

HTTPS制限があると、WordPress管理画面にログインできないので、DBを直接操作して、次の2文を実行します(「DB名」と「WordPressのURL」は各自の環境に合わせて変更してください)

  • 「UPDATE DB名.wp_options set option_value=’https://WordPressのURL’ where option_name=’siteurl’;」
  • 「UPDATE DB名.wp_options set option_value=’https://WordPressのURL’ where option_name=’home’;」

2. HTTPアクセスをHTTPSアクセスと認識させる

 WordPressのPHPファイルを編集します。

[wordpressインストールフォルダ/wp-config.php]の下の方に書いてある[require_once]文より上に、
次のif文を追記します。

if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
          $_SERVER['HTTPS'] = 'on';

これで、解決できます。お疲れサマでした。南無阿弥陀仏♪

[参考ページ]

https://codex.wordpress.org/Function_Reference/is_ssl

[原因の解説]

ELBでHTTPS制限している場合は、外部からのアクセスはHTTPSに制限されますが、内部アクセスはHTTPに変わります。このため、WordPressへの内部アクセスはHTTPになります(ここがポイントです!)

WordPressがHTTP設定の場合、外部からのアクセスはHTTPSなのに、WordPressが生成するアドレスはHTTPになるため、ブラウザがセキュリティエラーを出して、[管理画面にログインできない]状態になります。

また、WordPressがHTTPS設定の場合、HTTPアクセスが来るとHTTPSアクセスへ変更してリダイレクトする仕様のため、リダイレクト無限ループが発生して、[管理画面自体が表示されない]状態になります。

■リダイレクト無限ループ

①WordPressがHTTP(内部のアクセス)をHTTPSへ変更してリダイレクト

②リダイレクトされたHTTPSを、ELBがWordPressへHTTPとして渡す(->①へ戻る)

WordPressがリダイレクトするコードはwp-login.phpファイルの先頭あたりに書いてあるので、見てみると面白いと思います。

それではまた。次回の投稿にご期待ください。南無阿弥陀仏♪

EC2のmysqlが落ちた

ブログを書こうと思ってアクセスしたら「データベース接続確立エラー」でサイトを開けず。

mysqlが落ちてたので起動したがまたすぐに落ちてしまった。

EC2のスワップ領域を設定すると良い、という記事を見つけたのでそれを参考に設定してみるものの、またすぐに落ちる。

アクセスログを見たところ、xmlrpc.phpへの大量アクセスがあることが判明。

下記サイトを参考に不正なアクセスを拒否してとりあえず解決。

https://iritec.jp/web_service/10258/

何かしら監視ツールをいれやう。