Mod_GeoIP este un modul Apache care poate fi utilizat pentru a obține locația geografică a fișierului IP adresa vizitatorului în Apache server web. Acest modul vă permite să determinați vizitatorul țară, organizare, și Locație. Este deosebit de util pentru Difuzarea anunțurilor geografice, Conținut vizat, Lupta împotriva spamului, Detectarea fraudei, Redirecționare / blocare vizitatori în funcție de țara lor și multe altele.
Modulul GeoIP permite administratorilor de sistem să redirecționeze sau să blocheze traficul web în funcție de locația geografică a clientului. Localizarea geografică este învățată prin adresa IP a clientului.
Mod_GeoIP are două versiuni diferite una este Gratuit iar altul este Plătit și folosește MaxMind GeoIP / GeoCity baze de date.
Dacă doriți să verificați mai multe diferențe între Gratuit și Plătit versiune, vă rugăm să vizitați Maxmind.com.
Acest articol explică modul de configurare și instalare a Mod_GeoIP modul pentru Apache în RHEL și CentOS folosind EPEL depozit cu Manager de pachete YUM utilitate.
Presupunem că ați rulat deja RHEL și CentOS sistem cu funcționare LAMPĂ (Linux, Apache, MySQL, și PHP) înființat. Dacă nu, citiți articolele noastre în care am arătat instalarea ambelor sisteme de operare cu LAMPĂ.
În mod implicit mod_Geoip nu este disponibil sub RHEL / CentOS depozit oficial, deci trebuie să instalăm și să activăm terți EPEL repertoriu.
# yum instala epel-release. # yum instalați https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm [Pe RHEL 8]
Odată ce ai făcut-o EPEL depozitul activat pe sistemul dvs., îl puteți instala pur și simplu mod_geoip executând următoarea comandă cu pachetele lor de dependență.
# yum install mod_geoip GeoIP GeoIP-devel GeoIP-data zlib-devel.
Este o idee bună să descărcați cele mai recente Geo City și Baza de date de țară să rămână la curent.
# cd / usr / share / GeoIP / # mv GeoIP.dat GeoIP.dat_org. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz. # gunzip GeoLite2-Country.tar.gz. # gunzip GeoLite2-City.tar.gz.
După ce modulul a fost instalat, deschideți și editați fișierul principal de configurare al modulului, cu un editor de text din linia de comandă, cum ar fi viși activați modulul la nivel de server, așa cum este ilustrat în extrasul de mai jos.
# vi /etc/httpd/conf.d/geoip.conf.
Setați linia GeoIPEnable de la Dezactivat la Pe. De asemenea, asigurați-vă că adăugați calea absolută la fișierul bazei de date GeoIP.
GeoIPEnable Activat. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat MemoryCache.
Reporniți Apache serviciu pentru a reflecta schimbările.
# systemctl reporniți httpd. SAU. # service httpd restart
Cu toate acestea, nu este recomandat să porniți modulul GeoIP la nivel de server. Ar trebui să activați modulul GeoIP numai în sau blocuri unde efectuați efectiv redirecționarea sau blocarea traficului.
Pentru a testa mod_geoip modulul funcționează corect cu Apache, trebuie să creăm un PHP fișier numit testgeoip.php sub Apache director rădăcină (de exemplu. / var / www / html).
# vi /var/www/html/testgeoip.php.
Introduceți următoarea bucată de cod PHP.
Care este adresa mea IP - determinați sau recuperați adresa mea IP php if (getenv (HTTP_X_FORWARDED_FOR)) {$ pipaddress = getenv (HTTP_X_FORWARDED_FOR); $ ipaddress = getenv (REMOTE_ADDR); ecou „Adresa dvs. IP proxy este:”. $ pipaddress. "(prin $ ipaddress)"; } else {$ ipaddress = getenv (REMOTE_ADDR); ecou „Adresa dvs. IP este: $ ipaddress”; } $ country = getenv (GEOIP_COUNTRY_NAME); $ country_code = getenv (GEOIP_COUNTRY_CODE); ecou "
Țara ta: $ țară ($ țară_cod)";
Acum, încercați să apelați fișierul utilizând un browser web (de exemplu. http://localhost/testgeoip.php). Veți obține adresa IP și Țară Detalii.
Baza de date GeoIP este actualizată la începutul fiecărei luni. Deci, este foarte important să mențineți baza de date GeoIP actualizată. Pentru a descărca cea mai recentă versiune a bazei de date, utilizați următoarea comandă.
# cd / usr / share / GeoIP / # mv GeoIP.dat GeoIP.dat_org. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. # wget http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz. # gunzip GeoLite2-Country.tar.gz. # gunzip GeoLite2-City.tar.gz.
Am scris un mic script shell care va descărca automat ultima versiune a bazei de date GeoIP în fiecare lună. Plasați oricare dintre următoarele scripturi sub /etc/cron.monthly.
# Actualizare automată a bazei de date GeoIP. #! / bin / sh. cd / usr / share / GeoIP. mv GeoIP.dat GeoIP.dat_org. wget -q http://geolite.maxmind.com/download/geoip/database/GeoLite2-Country.tar.gz. gzip -d -f GeoLite2-Country.tar.gz
#! / bin / sh GEOIP_MIRROR = " http://geolite.maxmind.com/download/geoip/database" GEOIPDIR = / usr / share / GeoIP. TMPDIR = DATABASES = "GeoLiteCity GeoLiteCountry / GeoIP asnum / GeoIPASNum GeoIPv6" if [-d "$ {GEOIPDIR}"]; apoi cd $ GEOIPDIR dacă [-n "$ {DATABASES}"]; apoi TMPDIR = $ (mktemp -d geoipupdate. XXXXXXXXXX) ecou „Actualizarea bazelor de date GeoIP ...” pentru db în $ DATABASES; faceți fname = $ (nume de bază $ db) wget --no-verbose -t 3 -T 60 "$ {GEOIP_MIRROR} / $ {db} .dat.gz" -O "$ {TMPDIR} / $ {fname} .dat .gz "gunzip -fdc" $ {TMPDIR} / $ {fname} .dat.gz "> "$ {TMPDIR} / $ {fname} .dat" mv "$ {TMPDIR} / $ {fname} .dat" "$ {GEOIPDIR} / $ {fname} .dat" chmod 0644 "$ {GEOIPDIR} / $ { fname} .dat "done [-d" $ {TMPDIR} "] && rm -rf $ TMPDIR fi. fi
Exemplul de cod de mai jos va redirecționa utilizatorii pe baza codului de țară pe care l-am setat LA FEL DE (Asia). În acest fel puteți redirecționa orice utilizator în funcție de codul județului.
GeoIPEnable Activat. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat # Redirecționează o țară. RewriteEngine on. RewriteCond% {ENV: GEOIP_COUNTRY_CODE} ^LA FEL DE$ RewriteRule ^ (. *) $https://www.tecmint.com1 $ [R, L]
Acest exemplu va bloca utilizatorii pe baza codului de țară stabilit de GeoIP. Exemplul de mai jos va bloca utilizatorii de la LA FEL DE (Asia) și S.U.A. (Statele Unite) țări.
GeoIPEnable Activat. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE LA FEL DE BlockCountry. SetEnvIf GEOIP_COUNTRY_CODE S.U.A. BlockCountry. #... plasează aici mai multe țări Refuză de la env = BlockCountry
Acest exemplu de mai jos va permite utilizatorilor din țările menționate mai jos.
GeoIPEnable Activat. GeoIPDBFile /usr/share/GeoIP/GeoIP.dat SetEnvIf GEOIP_COUNTRY_CODE LA FEL DE AllowCountry. SetEnvIf GEOIP_COUNTRY_CODE S.U.A. AllowCountry. #... plasează aici mai multe țări Refuză de la toți. Allow from env = AllowCountry
Pentru mai multe informații despre mod_geoip iar utilizarea sa poate fi găsită la http://www.maxmind.com/app/mod_geoip. Dacă aveți probleme în configurarea unui modul mod_geoip, vă rugăm să ne anunțați prin comentarii și nu uitați să îl împărtășiți prietenilor.