مسدود کردن IP کشورها در Nginx با GeoIP Module



بستن IP کشورها در Nginx با GeoIP Module

در این آموزش نحوه راه اندازی ماژول GeoIP  در وب سرور nginx برای مسدود کردن IP کشورهای بازدید کننده رو توضیح میدیم که IP کشورهای بازدید کننده از سوی دیتابیس GeoIP تشخیص داده میشه و nginx به ماژول HttpGeoipModule باید کامپایل بشه تا فعال بشه.

 

ابتدا EPEL و Nginx-Mainline رو نصب و فعال میکنیم ، سپس nginx-module-geoip رو نصب میکنیم

sudo yum install epel-release
yum install nginx-module-geoip

 

بعد کد زیر رو در این مسیر ” /etc/nginx/nginx.conf ” اضافه میکنیم

load_module "modules/ngx_http_geoip_module.so";

 

برای چک کردن اینکه خطای syntax در فایل nginx.confن نباشه کد زیر رو در ترمینال میزنیم

nginx -t

 

اگه خطایی نبود Nginx رو reload میکنیم

nginx -s reload

 

و دستور زیر رو برای تایید ماژول اجرا میکنیم

nginx -V
خروجی به شکل زیر خواهد بود :
nginx version: nginx/1.13.5
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre --with-file-aio --with-http_realip_module --without-http_scgi_module --without-http_uwsgi_module --without-http_fastcgi_module --with-http_geoip_module --add-module=/tmp/nginx-sticky-module-ng --add-module=/tmp/nginx_upstream_check_module

 

تنظیم کردن Geoip برای مسدود لیست کشورها

فایل زیر رو ویرایش میکنیم

/etc/nginx/nginx.conf

 

و کد زیر رو در بلاک http {} block قرار میدیم

[...]
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allowed_country {
        default yes;
        FK no;
        FM no;
        EH no;
    }
[...]

توجه کنین […] کپی نشه ، […] فقط برای نمایش بلاک بندی است.

در کد بالا تمای کشورها اجازه ی ورود به سایت رو دارن ، غیر از 3 تا کشور FK , FM , EH .

اسم لیست کشورها برای مسدود سازی رو میتونین از این سایت دریافت کنین

 

[...]
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allowed_country {
        default no;
        FK yes;
        FM yes;
        EH yes;
    }
[...]

همچنین در کد بالا تمامی کشورها اجازه ی ورود به سایت رو ندارن به غیر از 3 کشور  FK , FM , EH که اجازه ورود دارن.