NGNX、アルパインLinuxとDockerを使っているあなたのウェブサイトにアクセスすることからのブロック特定の国


このポストは、あなたのウェブサイトを使用することから特定の国をブロックするためにNanoxをNanoxに設定する方法を簡単に説明します.また、チェックアウトすることができますthis GitHub repository 完全な例です.

nginx geoipモジュールのインストール
モジュールをインストールするには、次の手順を実行します.
apk --no-cache add nginx-mod-http-geoip
注意してくださいthe old GeoIP module , not the paid-for GeoIP2 one that requires Nginx Plus .

GeoIPデータベースのダウンロード
GeoIPデータベースは、最近のフォーマットをmmdb GeoIPモジュールがまだレガシーを使用している間dat 形式.
があるways of converting from mmdb to dat しかし、幸運にもユーザーprovides download of pre-converted files , そこで、そこから最新バージョンをダウンロードすることができます.
国のデータベースをダウンロードし、それを展開し、パスに入れて/usr/share/GeoIPCountry.dat
nginxの変更conf
変更するnginx.conf ファイルを追加し、次のように追加します.
内部http ブロックを追加します
geoip_country /usr/share/GeoIPCountry.dat;

# Allowed proxy addresses
geoip_proxy 10.0.0.0/8;
geoip_proxy 172.17.0.1/16;

# List of disallowed countries 
map $geoip_country_code $allowed_country {
    default yes;
    AL no;
    BS no;
}
あなたが必要とするgeoip_proxy エントリーは、あなたが逆プロキシ/ロードバランサの前でNGinxを使用している場合だけ(AWS ALBのような).ここに含まれる範囲については、nginxはX-Forwarded-For ヘッダは、要求に由来するIPに対して.このような設定を持っていない場合は、これらの行を削除することができます.
また、アルバニアとバハマをリストする例から国コードのリストを変更する必要があります.すべての国コードを見つけることができますon this site .
インサイドserver サイトのブロックを次に示します.
# Add Country header for debugging
add_header X-Cntry "$geoip_country_code";

if ($allowed_country = no) {
    return 444;
}
IPがブロックされた国のうちの1つに属しているならば、これは内容を返さないことによってIPアドレスを妨げます.また、ヘッダX-Cntry 国コードを使用すると、すべてが正しく動作することを確認できるように.例えば、今できるcurl サーバーを使用して、このコマンドを使用して国コードを参照してください
curl https://your-site.com --HEAD --silent | grep -i X-Cntry
結果は次のようになります.
X-Cntry: SE

Dockerセットアップ
また、完全なDockerの例を見ることができますin this repository .

注意/確認
  • https://www.howtoforge.com/nginx-how-to-block-visitors-by-country-with-the-geoip-module-debian-ubuntu
  • 写真でdelfi de la Rua on Unsplash