jwtを利用したサービスでログイン時にfastlyのcacheを有効にする
ログインユーザーにもcacheを効かせたいときがある. その時はjwt tokenの値を利用してcacheを作れば良い. jwt tokenの名前を jwt_token しよう. まずjwt tokenから値を抜き出す. sub vcl_recv { if (req.http.Cookie ~ "jwt_token=.*") { set req.http.X-TOKEN = regsub(re.group.0, "\;.*", ""); } } 次にcacheのkeyとなるhashを生成する. sub vcl_hash { if (req.http.X-TOKEN) { set req.hash += req.http.X-TOKEN; } set req.hash += req.url; } これでjwt tokenを利用してcacheが作られます. ちなみにログインのたびにjwt tokenは変わるのでログインごとにcacheが破棄されるような挙動になる.