雑記

インフラのことだったりプログラムのことだったりどうでもいいこと書いたり。要は雑記。

nginxのgeoモジュールが便利すぎる

なにができるの?

REMOTE_ADDRを列挙して変数に格納できます。

設定してみる

特定のIPしかアクセスさせたくないコンテンツがあるとします。
今回は例として「/admin」以下へのアクセスはローカルネットワークからのアクセスのみを許可させます。

http {
   ・
   ・
   ・
    geo $access_allowed {
       default disable;
       127.0.0.1 allow;
       192.168.0.0/24 allow;
    }
   ・
   ・
   ・
    server {
       ・
       ・
       ・
       location /admin {
           if ($access_allowd = "disable") { return 404; }
       }
       ・
       ・
       ・
    }
}

アクセス許可対象を増やしたい場合はgeoディレクティブにIPを追加するだけ。
さらにレスポンスコードも指定できるのもイイですね。
Apacheでやろうとする場合はmod_rewriteでごにょごにょしなきゃいけなかったのでこれかなり楽な設定です。

ドキュメント

http://nginx.org/en/docs/http/ngx_http_geo_module.html


しばらくはnginxネタが続くと思います。