nginx を用いて Cloudflare 経由のアクセスをアクセス元の IPアドレス で区別して 認証させる/そのまま通す 方法

前提

以下の記事の具体例を端的に書きます。

conf ファイル

設定ファイルは以下のようにするとよいかと思います。$http_x_forwarded_for を用いるのがポイントです。

ここでの条件および期待する結果は次のとおりです。

  • 123.123.123.123 および 231.231.231.231 からのアクセスでは認証(BASIC認証)なしでアクセス可能だが、それ以外からアクセスには BASIC認証 を要求する
  • AUTH_FILE*1 htpasswd コマンドで生成したものです
    • 中身は foobar:$apr1$agluSKU$Ft8Esuam3hl1Ezs/nrLz5b みたいな感じです
map $http_x_forwarded_for $auth_basic {
  default "Please enter authentication information";
  123.123.123.123 off;
  231.231.231.231 off;
}

server {
  auth_basic_user_file /path/to/AUTH_FILE;
  auth_basic $auth_basic;

(省略)
}

現在において BASIC認証 を使う機会はあまりないでしょうが、Cloudflare からのアクセスの振り分けの一例として書きました。

*1:仮の名前とはいえ変な命名ですが

Powered by はてなブログ