LB配下で安全にconcrete5を使う

この記事はconcrete5 Japan Advent Calendar 2017の8日目の記事です。
7日目はpictron2009さんの記事”プライマリで仕事を受注した案件でconcrete5が採用に至ったポイント“でした。

concrete5でも、LB越しのアクセスでは、
ユーザーのアクセス元の IP アドレスが変わるとログアウトするように設計
されているんだとか・・・

と、いう事で、AWSのALBやELB越しにアクセスした場合、何の対処もしないとnginxに到達するアクセス元IPはALBやELBのIPアドレスになってしまうのは、LB経由の場合は普通の事。

最近すっかりAWS仕事が多い事もあって、その回避策・・・

まずは、EC2インスタンスにKUSANAGIをインストールして、プロビジョニングとconcrete5のインストールまで実施
現時点(2017年12月10日)では、KUSANAGIでインストールされるconcrete5は5.7という事で、
ドキュメントルートに展開されたconcrete5のファイルをごっそり削除して、8.2の各ファイルを展開します。
データベースが作られてしまっている場合は、250テーブル弱ほどあると思いますが、一気にdrop table テーブル名
として、テーブルも削除し、8.2をインストールしましょう。

8.2のインストールができたら、concrete5のダッシュボードにアクセスして、nginx上のログを確認してみましょう。
KUSANAGIでnginxのログファイルは

/home/kusanagi/プロファイル名/log/nginx/access.log

に出力されます。

また、KUSANAGIのアクセスログフォーマットは

として記録されます。
この”$remote_addr”が、LBのIPアドレスに成ってしまうのが問題ですよね。
#LBのIPを信頼済みIPアドレスとして認識させる方法もあるようですが...

そこで、/etc/nginx/nginx.conf
に以下の行を追記します。
#自分は、httpディレクティブの一番最後に以下を記載

これで、”$remote_addr”は、アクセス元クライアントのIPが正しく記録され、concrete5にログイン後もログアウトされる事なく利用できるようになります。
(自分の環境ではログアウトされる事なく動いていますが、これが正しい対応かは判っていませんが・・・)

みなさんにハッピーなconcrete5ライフを!!