kasei_sanのブログ

かせいさんのIT系のおぼえがきです。胡乱の方はnoteとtwitterへ

ロードバランシングしている場合、サーバまたいでもRailsのcookie sessionって保持されるか不安になった時に見るページ

いつもはkey-valueストアでやっているので、cookie sessionを使うとなった時に心配になったのでメモ

先に結論

sessionは保持される

理由

cookie sessionは、ブラウザ側でsessionの情報を保持して、サーバ側に情報を持たないから

cookieおさらい

cookie : webサーバと、ブラウザ間で情報を管理するプロトコル(RFC6265)

  • key=value で情報を保持
  • リクエスト/レスポンスヘッダでやりとりする
  • 適用範囲 : path, domainを指定可能
    • domain 未指定の場合、発行したdomain上でだけ受信可能
  • 有効期限 : 未指定の場合ブラウザを閉じたら終了

session

webサーバとブラウザで情報を管理する仕組み ログイン情報とか、カートに何が入っているかとか

cookie session

  • sessionの情報をcookieを使って管理する
  • railsでのsessionの管理方法のデフォルト
  • valueは暗号化されて格納される

欠点

  • cookieのサイズ上限は4Kbyte(safariの場合)
  • 大量のデータを保持した場合、通信量が増える
  • ブラウザ側でデータを改変できる

cookie以外のsession管理方法

(やや別件) ロードバランシングした場合、複数サーバを跨ると困るところは?

  • /tmp ディレクトリに一時ファイルを生成して、そのpathをcookieに入れて処理している場合
  • メモリにsession情報を入れている場合(cookieにはsession idのみ)

参考リンク