これはなに
Webの開発環境などパブリックにしたくないWebサイトを
特定の他者に公開したいときや、もしくは自分のモバイル端末などで確認したいときがあります。
そういう場合に、Cookieに秘匿情報を設定することで突破することができます。
ここで、リテラシーの問題やスマホブラウザなど機能的にCookieに値を設定するのが困難な場合があります。
そこで特定のURLのみ公開し、そのURLでCookieをセットします。
この設定が生きる場面
- SPAなどでauthorizationヘッダを使っているためBasic認証が使えない
- コワーキングスペースなど公共の場所からアクセスしたいのでIPアドレスでの制限が使えない
- Cookieが容易に変更できないスマホブラウザなどに対応したい
設定部分
location = /hogehogehoge {
add_header Set-Cookie "secret=fugafugafuga";
return 302 https://$host;
}
location / {
set $interrupt true;
if ( $cookie_secret = "fugafugafuga" ) {
set $interrupt false;
}
# if ( $geo_office ) {
# set $interrupt false;
# }
if ( $interrupt = true ) {
return 403;
}
proxy_pass http://backend;
}
解説
location = /hogehogehoge
が、秘匿情報をセットするURLになります。
適当な文字を設定しましょう。
cookie secret
の値にfugafugafuga
が入り、トップ画面にリダイレクトされます。
location /
では、条件に基づいて$interrupt
変数が変更され、
最終的に403を返すかどうかを判定します。
前述したcookiesecret
の値で判断することや、geo
を使ってIPアドレスで許可することもできます。