GeoIP dla Ngix blokowanie użytkowników z konkretnego kraju – Debian / Ubuntu

Print Friendly, PDF & Email

Dzięki dodatkowi GeoIP dla ngix możemy zablokować dostęp do naszej strony dla użytkowników z konkretnego kraju.
Aby wszystko działało musimy mieć w zainstalowanym ngix wkompilowany dodatek  HttpGeoipModule .
Poleceniem nginx -V możemy sprawdzić czy taki dodatek jest wbudowany, po jego wywołaniu powinniśmy otrzymać poniższą odpowiedź wraz z tym modułem (zaznaczony na czerwono):


nginx version: nginx/1.2.1
TLS SNI support enabled
configure arguments: –prefix=/etc/nginx –conf-path=/etc/nginx/nginx.conf –error-log-path=/var/log/nginx/error.log –http-client-body-temp-path=/var/lib/nginx/body –http-fastcgi-temp-path=/var/lib/nginx/fastcgi –http-log-path=/var/log/nginx/access.log –http-proxy-temp-path=/var/lib/nginx/proxy –http-scgi-temp-path=/var/lib/nginx/scgi –http-uwsgi-temp-path=/var/lib/nginx/uwsgi –lock-path=/var/lock/nginx.lock –pid-path=/var/run/nginx.pid –with-pcre-jit –with-debug –with-http_addition_module –with-http_dav_module –with-http_geoip_module –with-http_gzip_static_module –with-http_image_filter_module –with-http_realip_module –with-http_stub_status_module –with-http_ssl_module –with-http_sub_module –with-http_xslt_module –with-ipv6 –with-sha1=/usr/include/openssl –with-md5=/usr/include/openssl –with-mail –with-mail_ssl_module –add-module=/build/buildd-nginx_1.2.1-2.1-amd64-fMGfEu/nginx-1.2.1/debian/modules/nginx-auth-pam –add-module=/build/buildd-nginx_1.2.1-2.1-amd64-fMGfEu/nginx-1.2.1/debian/modules/nginx-echo –add-module=/build/buildd-nginx_1.2.1-2.1-amd64-fMGfEu/nginx-1.2.1/debian/modules/nginx-upstream-fair –add-module=/build/buildd-nginx_1.2.1-2.1-amd64-fMGfEu/nginx-1.2.1/debian/modules/nginx-dav-ext-module

1) Instalujemy bazę GeoIP:

apt-get install geoip-database libgeoip1

mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak

cd /usr/share/GeoIP/
wget 
http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz

2) Skonfigurujemy Ngix:

vi /etc/nginx/nginx.conf

Dodajemy wpis w sekcję http, oraz przed include:

geoip_country /usr/share/GeoIP/GeoIP.dat;
    map $geoip_country_code $allowed_country {
        default no;
        FK yes; #dodajemy skrót kraju który chcemy zablokować 
        FM yes;
        EH yes;
    }

Aby faktycznie zablokować dostęp do konkretnych krajów musimy dodać do vhost (w apache) w sekcji server{}:

if ($allowed_country = no) {
            return 444;
        }

W ten sposób otrzymamy błąd 444 gdy ktoś z zablokowanego kraju będzie usiłował się dostać do naszej strony.
Na koniec musimy zrobić restart ngix’a:

/etc/init.d/nginx reload


Print Friendly, PDF & Email

Dziękuję Ci, za poświęcony czas na przeczytanie tego artykułu. Jeśli był on dla Ciebie przydatny, to gorąco zachęcam Cię do zapisania się na mój newsletter, jeżeli jeszcze Cię tam nie ma. Proszę Cię także o “polubienie” mojego bloga na Facebooku oraz kanału na YouTube – pomoże mi to dotrzeć do nowych odbiorców. Raz w tygodniu (niedziela punkt 17.00) otrzymasz powiadomienia o nowych artykułach / projektach zanim staną się publiczne. Możesz również pozostawić całkowicie anonimowy pomysł na wpis/nagranie.

Link do formularza tutaj: https://beitadmin.pl/pomysly

Pozostaw również komentarz lub napisz do mnie wiadomość odpisuję na każdą, jeżeli Masz jakieś pytania:).

Dodaj komentarz

beitadmin.pl - Droga Administratora IT