هناك العديد من الأصدقاء الذين أنشأوا مواقع التجارة الخارجية ويريدون تقييد الوصول إلى مواقعهم الإلكترونية عن طريق عناوين IP المحلية. وهناك أيضًا بعض الأصدقاء الذين تخزن مواقعهم الإلكترونية موارد يجب حظرها من عناوين IP محددة لأسباب مختلفة. وقد شهد بعض الأصدقاء هجمات. معظم عناوين IP المصدر تأتي من الخارج، وتريد منع عناوين IP الأجنبية من الوصول إلى موقع الويب.
بغض النظر عن السبب، غالبًا ما يتم استخدام حظر وحظر الوصول إلى IP من مناطق وبلدان محددة في بناء مواقع الويب اليومية لدينا. إذا كنت تستخدم PHP، فإن الطريقة البسيطة نسبيًا هي إضافة التعليمات البرمجية لتحديد عنوان IP في ملف PHP واستخدام مكتبة IP للمقارنة. إذا كان عنوان IP ضمن نطاق الوصول المقيد، فامنعه من الاستمرار في الوصول.
إذا كان موقع الويب هو Nginx، فيمكنك استخدام وحدة Nginx-ngx_http_geoip_module مباشرة، ويمكن أن تكون هذه الوحدة دقيقة لعنوان IP الخاص بالبلد والمقاطعة والمدينة وما إلى ذلك، ويتم تنفيذ جميع عمليات تحديد الهوية وحظر الوصول بواسطة Nginx، لذلك فهي كذلك. أكثر توفيرًا للموارد مقارنةً بـ PHP، لكن Nginx أكثر صعوبة في التجميع.
إذا كان موقع الويب مبنيًا على خادم VPS أو خادم مستقل، فيمكنك استخدام جدار حماية Linux مباشرةً واستخدام قواعد iptables لمنع الوصول إلى IP من بلدان ومقاطعات محددة. بالطبع، لا داعي للقلق لمستخدمي WordPress بشأن Nginx وiptables ومشكلات التكوين الأخرى، لأن WordPress يحتوي بالفعل على العديد من المكونات الإضافية التي تقيد الوصول إلى IP.
ستشارك هذه المقالة أربع طرق لحظر مواقع الويب وحظر إعدادات الوصول إلى IP في مناطق وبلدان محددة: كود PHP ووحدة Nginx وجدار الحماية iptables ومكون WordPress الإضافي. إذا كنت منزعجًا دائمًا من الهجمات الضارة المختلفة أثناء عملية إنشاء موقع الويب، فيمكنك تجربة الطرق التالية:
- خمس نصائح أمنية لاستخدام لوحة تحكم VPS مجانية - لا تدع المتسللين يستغلون ذلك
- يمكّن WordPress طريقة تسريع ذاكرة التخزين المؤقت Nginx fastcgi_cache - مثال لتكوين Nginx
- عشر نصائح مجانية لتسريع CDN من CloudFlare قد لا تعرفها -SSLDDOSCache
ملاحظة: تم التحديث في 25 مارس 2019، فيما يتعلق بمشكلات أمان VPS، قد يتجاهل العديد من الأصدقاء تكوين SSH لـ VPS نفسه، فيما يلي إستراتيجيات التعزيز: حماية أمان مضيف VPS والخادم: منفذ تعديل SSH ، أضف القائمة البيضاء، تسجيل الدخول بالمفتاح فقط.
ملاحظة: تم التحديث في 19 مارس 2020 ، إذا تم اختراق موقع الويب الخاص بك، فيمكنك الرجوع إلى الطرق التالية لحل المشكلة: تحليل استكشاف أخطاء اختراق حصان طروادة وخادم موقع الويب وإصلاحها - أساليب الأمان المحسنة لمضيف VPS والخادم.
1. يحظر كود PHP عنوان IP محددًا
رمز PHP بسيط نسبيًا. ما عليك سوى وضع الكود التالي في ملف PHP الخاص بك لمنع عناوين IP ضمن نطاق معين من الوصول إلى موقع الويب وفقًا لدقة مكتبة IP، ويمكن أن يكون دقيقًا لعنوان IP والكود على المستوى الوطني. المستويات الإقليمية والبلدية وغيرها من الأمثلة على ذلك (يمكن استخدام هذا الرمز أثناء مكتبة الإسكندرية):
<?php /** * * test.php(屏蔽国家IP) * */ $verification = '美国';//需要屏蔽国家的IP function get_client_ip() { $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } return $ip; } $ip = get_client_ip();//获取访客IP $antecedents = $_SERVER['HTTP_REFERER'];//访客来路地址 $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。 $address = json_decode($result,true); //判断访客是否属于美国,是否来自百度,是否来自谷歌 if($address['data']['country'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){ sleep(10);//设置一个10秒等待。 header('HTTP/1.1 503 Service Temporarily Unavailable'); header('Status: 503 Service Temporarily Unavailable'); header('Retry-After: 3600000'); exit; } /****** 如果需要阻止某一个省份的IP访问,使用以下代码*********/ <?php /** * * test.php(屏蔽地方IP) * */ $verification = '江西省';//需要屏蔽省份的IP function get_client_ip() { $ip = $_SERVER['REMOTE_ADDR']; if (isset($_SERVER['HTTP_X_REAL_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_REAL_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_REAL_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } elseif (isset($_SERVER['HTTP_CLIENT_IP']) && preg_match('/^([0-9]{1,3}.){3}[0-9]{1,3}$/', $_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } return $ip; } $ip = get_client_ip();//获取访客IP $antecedents = $_SERVER['HTTP_REFERER'];//访客来路地址 $result = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$ip);//IP数据库来自淘宝。 $address = json_decode($result,true); //判断访客是否属于江西省,是否来自百度,是否来自谷歌 if($address['data']['region'] == $verification && strpos($antecedents, 'baidu') === false && strpos($antecedents, 'google') === false){ sleep(99999999);//设置一个999999秒的等待。 Header("HTTP/1.1 204 No Content"); exit; }
2. وحدة Nginx-ngx_http_geoip_module
تنزيل مكتبة IP:
- HTTPS://Dev.马Xiumin's.com/Geo IP/legacy/geohlit/
2.1 حظر الوصول من عناوين IP لدولة معينة
تسمح وحدة ngx_http_geoip_module لـ Nginx بتنفيذ احتياجات مختلفة بناءً على عنوان IP الخاص بالزائر. نستخدم هنا وحدة ngx_http_geoip_module لمنع عناوين IP محددة من الوصول إلى موقع الويب.
الأول هو تجميع ngx_http_geoip_module في Nginx. إذا كنت تستخدم لوحة Pagoda BT، فيمكنك استخدام الأمر التالي:
#安装geoip库 yum -y install epel-release yum -y install geoip-devel #先查看一下本机的Nginx配置情况 [root@cs ~]# nginx -V nginx version: nginx/1.14.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) built with OpenSSL 1.0.2l 25 May 2017 TLS SNI support enabled configure arguments: --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc #开始下载Nginx,这里用的是1.15.1,你也可以下载其它的版本 wget http://nginx.org/download/nginx-1.15.1.tar.gz tar -xzvf nginx-1.15.1.tar.gz cd nginx-1.15.1 #下面的命令只是在上面的Nginx -v得到的配置详情后加上了--with-http_geoip_module,目的是为了保持原来的配置不变同时又增加新的模块 ./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --add-module=/www/server/nginx/src/nginx-sticky-module --add-module=/www/server/nginx/src/nginx-http-concat --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_image_filter_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-ipv6 --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt=-Wl,-E --with-pcre=pcre-8.40 --with-ld-opt=-ljemalloc --with-http_geoip_module #只编译不安装 make
إذا كنت تستخدم البرنامج النصي LNMP أو Oneinstack، فيمكنك الرجوع إلى هنا: Oneinstack. تمكين وحدة Nginx-ngx_http_geoip_module. قم بتعطيل Nginx أولاً.
ثم استبدل Nginx الجديد وتأكد من تحميل وحدة Geoip. الأمر كما يلي:
mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx-lala.im cp objs/nginx /www/server/nginx/sbin/nginx ldd /www/server/nginx/sbin/nginx
انتقل إلى لوحة Pagoda، وانقر فوق Nginx، وقم بتعديل ملف التكوين، وأضف الكود التالي:
geoip_country /usr/share/GeoIP/GeoIP.dat;
العملية هي كما يلي:
الآن ابدأ تشغيل Nginx، ويمكنك إضافة قواعد إلى تكوين Nginx لموقع الويب، على سبيل المثال، يمكنك إرجاع خطأ محدد أو الوصول المباشر إلى IP إلى صفحة أخرى أو موقع ويب من بلد محدد:
#返回403 502 404等错误 location / { default_type text/html; charset utf-8; if ($geoip_country_code = CN) { return 403; } } #导向另一个网站目录 location / { default_type text/html; charset utf-8; if ($geoip_country_code = CN) { root /home/www/wzfou.com-cn/; } }
هذا لإضافة تكوين موقع الويب.
التأثير النهائي هو كما يلي:
2.2 السماح بالوصول إلى IP من بلدان محددة فقط
الطريقة هي نفسها المذكورة أعلاه. قم أولاً بتقديم مكتبة IP في تكوين Nginx الرئيسي، ثم قم بإضافة التعليمات البرمجية التي تحظر أي عنوان IP وطني ولكنها تسمح بعناوين IP وطنية محددة في تكوين Nginx لموقع الويب.
# 引入IP库 geoip_country /usr/share/GeoIP/GeoIP.dat; geoip_city /usr/share/GeoIP/GeoLiteCity.dat; map $geoip_country_code $allowed_country { default no; CN yes; } # 在配置中阻止IP if ($allowed_country = no) { return 403; }
3. جدار الحماية iptables
أولاً، تعرف على استخدام iptables وipset:
1. يحتوي iptables على عدة جداول، كل جدول مكون من سلاسل. الافتراضي هو جدول التصفية، والأكثر استخدامًا هو جدول التصفية، والآخر الأكثر استخدامًا هو جدول nat. بشكل عام، يهدف حظر IP إلى إضافة قواعد إلى سلسلة INPUT لجدول التصفية.
2. عند مطابقة القواعد، قم بمطابقتها واحدة تلو الأخرى من البداية إلى نهاية قائمة القواعد.
3. يوفر ipset طريقة لتحويل عملية O(n) هذه إلى O(1): ضع عنوان IP المراد معالجته في مجموعة وقم بتعيين قاعدة iptables لهذه المجموعة. مثل iptable، مجموعات IP هي شيء موجود في Linux kernel، والأمر ipset هو أداة لتشغيلها.
يسمح iptables لعنوان IP المحدد فقط بالوصول إلى المنفذ المحدد للجهاز، ويكون الأمر كما يلي:
1、在tcp协议中,禁止所有的ip访问本机的3306端口。 iptables -I INPUT -p tcp –dport 3306 -j DROP 2、允许123.456.789访问本机的3306端口 iptables -I INPUT -s 123.456.789 -p tcp –dport 3306 -j ACCEPT 以此类推………………………………… 封掉一个IP段: iptables -I INPUT -s 121.0.0.0/8 -j DROP 以上命令的顺序不能错 然后保存iptables # service iptables save 重启防火墙 #service iptables restart
كيفية حذف قواعد iptables ومسحها وإغلاقها وحفظها:
#CentOS 7请停止firewalld并安装iptables-services systemctl stop firewalld systemctl mask firewalld #安装 iptables-services yum install iptables-services ################ 保存 iptables 规则 service iptables save 重启 iptables service iptables restart ################# 执行清除命令 iptables -F时可能会断开与服务器的连接,如果想清空的话,先执行 /sbin/iptables -P INPUT ACCEPT 然后执行 /sbin/iptables -F 如果关闭防火墙,执行 /etc/init.d/iptables stop 或者是 services iptables stop ####################### iptables 规则若重启后消失,请用以下方法 步骤1:备份 iptables-save > /etc/iptables.up.rules.bak 步骤2:删除规则 vim /etc/sysconfig/iptables 或 vim /etc/iptables.up.rules 手动删除即可。 步骤3:导入新规则 iptables-restore < /etc/sysconfig/iptables 最后,重启VPS就可以生效了。
3.1 منع الوصول إلى IP من بلدان محددة بنقرة واحدة
- HTTPS://GitHub.com/III i III1/block-IPS-from-countries
المبدأ هو تنزيل مقطع IP الخاص بالبلد المحدد، ثم إضافة مقطع IP إلى قواعد iptables، وتنفيذ الأمر التالي مباشرة:
wget https://raw.githubusercontent.com/iiiiiii1/Block-IPs-from-countries/master/block-ips.sh chmod +x block-ips.sh ./block-ips.sh
سيُطلب منك بعد ذلك اختيار ما إذا كنت تريد حظر عنوان IP أو إلغاء حظر IP.
بعد اختيار حظر IP، سيُطلب منك إدخال رمز البلد، يرجى التحقق من هنا: http://www.ipdeny.com/ipblocks، على سبيل المثال، بالنسبة للولايات المتحدة، أدخل إلينا الحظر للولايات المتحدة بأكملها.
إذا كنت تريد إلغاء حظره، فقم بتنفيذ الأمر مرة أخرى وحدد 2.
3.2 السماح فقط بالوصول إلى عنوان IP لبلد محدد بنقرة واحدة
لقد قمنا أعلاه بتنفيذ حظر الوصول إلى IP من بلد معين بنقرة واحدة، ولكن العديد من الأشخاص يريدون السماح بالوصول إلى مواقعهم على الويب فقط عن طريق عناوين IP من بلد معين، ومنع الوصول إلى الآخرين، وفي هذه الحالة، يمكننا استخدام ما يلي يأمر:
wget https://do.wzfou.net/wzfou/block-any.sh chmod +x block-ips.sh ./block-ips.sh
الكود أعلاه يسمح فقط بالوصول إلى IP المحلي، وسيكتب القواعد في: /etc/rc.d/rc.local. ستتم إعادة استيراد قواعد iptables في كل مرة يتم فيها إعادة تشغيل النظام بحاجة إلى التعديل: /etc/rc.d/rc.local احذف رمز التشغيل الذاتي المقابل لبدء التشغيل. كود block-any.sh
هو كما يلي:
#! /bin/bash #判断是否具有root权限 root_need() { if [[ $EUID -ne 0 ]]; then echo "Error:This script must be run as root!" 1>&2 exit 1 fi } #检查系统分支及版本(主要是:分支->>版本>>决定命令格式) check_release() { if uname -a | grep el7 ; then release="centos7" elif uname -a | grep el6 ; then release="centos6" yum install ipset -y elif cat /etc/issue |grep -i ubuntu ; then release="ubuntu" apt install ipset -y fi } #安装必要的软件(wget),并下载中国IP网段文件(最后将局域网地址也放进去) get_china_ip() { #安装必要的软件(wget) rpm --help >/dev/null 2>&1 && rpm -qa |grep wget >/dev/null 2>&1 ||yum install -y wget ipset >/dev/null 2>&1 dpkg --help >/dev/null 2>&1 && dpkg -l |grep wget >/dev/null 2>&1 ||apt-get install wget ipset -y >/dev/null 2>&1 #该文件由IPIP维护更新,大约一月一次更新(也可以用我放在国内的存储的版本,2018-9-8日版) [ -f china_ip_list.txt ] && mv china_ip_list.txt china_ip_list.txt.old wget https://github.com/17mon/china_ip_list/blob/master/china_ip_list.txt cat china_ip_list.txt |grep 'js-file-line">' |awk -F'js-file-line">' '{print $2}' |awk -F'<' '{print $1}' >> china_ip.txt rm -rf china_ip_list.txt #wget https://qiniu.wsfnk.com/china_ip.txt #放行局域网地址 echo "192.168.0.0/18" >> china_ip.txt echo "10.0.0.0/8" >> china_ip.txt echo "172.16.0.0/12" >> china_ip.txt } #只允许国内IP访问 ipset_only_china() { echo "ipset create whitelist-china hash:net hashsize 10000 maxelem 1000000" > /etc/ip-black.sh for i in $( cat china_ip.txt ) do echo "ipset add whitelist-china $i" >> /etc/ip-black.sh done echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/ip-black.sh #拒绝非国内和内网地址发起的tcp连接请求(tcp syn 包)(注意,只是屏蔽了入向的tcp syn包,该主机主动访问国外资源不用影响) echo "iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/ip-black.sh #拒绝非国内和内网发起的ping探测(不影响本机ping外部主机) echo "iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/ip-black.sh #echo "iptables -A INPUT -j DROP" >> /etc/ip-black.sh rm -rf china_ip.txt } run_setup() { chmod +x /etc/rc.local sh /etc/ip-black.sh rm -rf /etc/ip-black.sh #下面这句主要是兼容centos6不能使用"-f"参数 ipset save whitelist-china -f /etc/ipset.conf || ipset save whitelist-china > /etc/ipset.conf [ $release = centos7 ] && echo "ipset restore -f /etc/ipset.conf" >> /etc/rc.local [ $release = centos6 ] && echo "ipset restore < /etc/ipset.conf" >> /etc/rc.local echo "iptables -I INPUT -m set --match-set whitelist-china src -j ACCEPT" >> /etc/rc.local echo "iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 0 -j DROP" >> /etc/rc.local echo "iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j DROP" >> /etc/rc.local #echo "iptables -A INPUT -j DROP" >> /etc/rc.local } main() { check_release get_china_ip ipset_only_china case "$release" in centos6) run_setup ;; centos7) chmod +x /etc/rc.d/rc.local run_setup ;; ubuntu) sed -i '/exit 0/d' /etc/rc.local run_setup echo "exit 0" >> /etc/rc.local ;; esac } main
إذا كنت تريد استبعاد بعض عناوين IP والسماح لعناوين IP هذه بمواصلة الوصول كاستثناءات، فيمكنك استخدام الأمر iptables -I لإضافة قواعد iptables، أو إضافة قواعد iptables يدويًا تنفيذ iptables من الأعلى إلى الأسفل.
3.3 تم ضبطه يدويًا للسماح بالوصول إلى IP من بلدان محددة فقط
الإعداد اليدوي هو نفس طريقة الإعداد بنقرة واحدة أعلاه. ما عليك سوى اتباع الأوامر التالية واحدًا تلو الآخر.
1、安装ipset #Debian/Ubuntu系统 apt-get -y install ipset #CentOS系统 yum -y install ipset CentOS 7还需要关闭firewall防火墙: systemctl stop firewalld.service systemctl disable firewalld.service 2、清空之前的规则 #防止设置不生效,建议清空下之前的防火墙规则 iptables -P INPUT ACCEPT iptables -F 3、创建新规则 #创建一个名为cnip的规则 ipset -N cnip hash:net #下载国家IP段,这里以中国为例,其它国家IP下载参考:http://www.ipdeny.com/ipblocks/ wget -P . http://www.ipdeny.com/ipblocks/data/countries/cn.zone #将IP段添加到cnip规则中 for i in $(cat /root/cn.zone ); do ipset -A cnip $i; done 4、设置IP段白名单 #放行IP段 iptables -A INPUT -p tcp -m set --match-set cnip src -j ACCEPT #关掉所有端口 iptables -P INPUT DROP 这时候就只有指定国家的IP能访问服务器了。 #如果你在国内,网站不允许被国内人访问,建议别关所有端口,这样你的S-S-H会上不去,我们可以只关闭80/443端口。 #关闭指定端口,比如80/443 iptables -A INPUT -p tcp --dport 80 -j DROP iptables -A INPUT -p tcp --dport 443 -j DROP 这时候其他国家的IP是无法访问你服务器的80/443端口,等于无法访问你的网站,其它端口还是可以访问的。 5、删除规则 #将参数里的-A改成-D就是删除规则了,如 iptables -D INPUT -p tcp -m set --match-set cnip src -j ACCEPT iptables -D INPUT -p tcp --dport 443 -j DROP
4. يقوم WordPress بحظر عناوين IP محددة
البرنامج المساعد ووردبريس
- HTTPS://WordPress.org/plugins/word Volume/
- HTTPS://WordPress.org/plugins/all-in-one-I'm Fear-security-安定-firewall/
- HTTPS://WordPress.org/plugins/IP-geoh-block/
تحتوي جميع المكونات الإضافية للأمان الثلاثة المذكورة أعلاه في WordPress على إعدادات لمنع الوصول إلى IP، والذي يمكن حظره بناءً على المصدر والبلد والنطاق واسم المجال لعنوان IP. (اضغط للتكبير)
يعد IP Geo Block أكثر احترافية إلى حد ما، بالإضافة إلى حظر عناوين IP محددة، يمكنه أيضًا حظر أو منع عناوين IP المختلفة من الوصول إلى صفحات مختلفة. (اضغط للتكبير)
5. ملخص
إن أبسط طريقة يمكن أن يقوم بها موقع ويب بحظر عنوان IP لبلد معين هو رمز PHP المقدم في هذه المقالة، والذي يشير إلى مكتبة Taobao IP. دقة عالية جدًا، ويمكن أيضًا أن تكون دقيقة بالنسبة للمقاطعة والمدينة يمكن تعديله وفقا لاحتياجاتك. العيب هو أنه لا يدعم HTTPS ويمكن تشغيله فقط في PHP.
في الواقع، الأكثر استخدامًا هو iptables، الذي يمنع الوصول إلى IP مباشرة عن طريق جدار حماية Linux، ولا يستهلك الموارد ويحظرها بشكل نظيف وكامل. تحتوي وحدة Geo IP الخاصة بـ Nginx على مجموعة واسعة من التطبيقات، وبدمجها مع Nginx، يمكنك عرض محتوى مختلف لمستخدمي IP المختلفين.