こんにちわ、cloudpack の かっぱこと 川原 洋平(@inokara)です。
はじめに
mod_geoip2 を試してみました Yo!
準備と導入
環境
- Amazon Linux AMI release 2014.03
- Apache/2.2.27 (Unix)
必要なパッケージを導入
yum install gcc yum install GeoIP yum install geoip-devel yum install httpd yum install httpd-devel
コンパイル
wget https://github.com/maxmind/geoip-api-mod_geoip2/archive/1.2.9.tar.gz tar zxvf 1.2.9.tar.gz cd geoip-api-mod_geoip2-1.2.9/ apxs -i -a -L/usr/lib -I/usr/include -lGeoIP -c mod_geoip.c
/usr/lib64/httpd/modules/mod_geoip.so
にインストールされる。
注意
Amazon Linux の場合には既に mod_geoip.x86_64
が用意されているので注意する。今回は上記のコンパイルした環境を利用した。
設定
以下のファイルを /etc/httpd/conf.d/
以下に置いた。
/etc/httpd/conf.d/geoip.conf
GeoIPEnable On GeoIPDBFile /usr/share/GeoIP/GeoIP.dat # Redirect one country RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^JP$ #RewriteRule ^(.*)$ http://www.yahoo.co.jp$1 [R,L] RewriteRule ^/(.*)$ /jp/$1 [L] # Redirect multiple countries to a single page RewriteEngine on RewriteCond %{ENV:GEOIP_COUNTRY_CODE} [^JP]$ #RewriteRule ^(.*)$ http://www.yahoo.com$1 [R,L] RewriteRule ^/(.*)$ /except_jp/$1 [L]
導入
sudo service httpd configtest sudo service httpd restart
動作確認
正しい方法か判断できかねるが日本以外からのアクセスは東京リージョン以外のインスタンス(念のため)から Web サーバーにアクセスしてみる。
でも、ちょっと信用出来なかったので接続元の IP を whois してみたが US となっているので、おそらく GeoIP が制御して US からの接続と判断しているようだ。
おお、ちゃんと日本からの接続になっている。
まとめ
- mod_geoip2 を利用するとお手軽に接続元 IP から接続元の国が判断出来る
- mod_rewrite と組み合わせてページの表示を切り替えたり、アクセスブロックしたり応用の幅が広がると思う
元記事は、こちらです。
「mod_geoip2 を試した」