Heim > Artikel > Betrieb und Instandhaltung > Wie legen Websites über Nginx IP-Beschränkungen für die Black-/Whitelist sowie IP-Zugriffsbeschränkungen für Länder und Städte fest?
nginx bietet mehrere Möglichkeiten, Black- und White-Listen zu konfigurieren. Hier sind nur zwei häufig verwendete Methoden.
Diese Methode ist die einfachste und direkteste. Richten Sie eine Firewall ähnlich wie iptable ein. So verwenden Sie:
Direkt zur Konfigurationsdatei hinzufügen:
#白名单设置,allow后面为可访问IP location / { allow 123.13.123.12; allow 23.53.32.1/100; deny all; } #黑名单设置,deny后面接限制的IP,为什么不加allow all? 因为这个默认是开启的 location / { deny 123.13.123.12; } #白名单,特定目录访问限制 location /tree/list { allow 123.13.123.12; deny all; }
Oder konfigurieren Sie die Whitelist, indem Sie die Datei IP auslesen
location /{ include /home/whitelist.conf; #默认位置路径为/etc/nginx/ 下, #如直接写include whitelist.conf,则只需要在/etc/nginx目录下创建whitelist.conf deny all; }
Erstellen Sie die Datei „whitelist.conf“ im Verzeichnis /home/ und schreiben Sie die Informationen Das muss der Whitelist-IP hinzugefügt werden. Nachdem Sie es hinzugefügt haben, sehen Sie sich Folgendes an:
cat /home/whitelist.conf #白名单IP allow 10.1.1.10; allow 10.1.1.11;
Die Whitelist-Einstellung ist abgeschlossen und die Blacklist-Einstellungsmethode ist dieselbe.
2: Die zweite Methode, ngx_http_geo_module
Mit diesem Modul können IP-Einschränkungen sowie Länder- und Regionsbeschränkungen festgelegt werden. Der Standort kann außerhalb des Servermoduls liegen.
Syntaxbeispiel:
Die Konfigurationsdatei wird direkt hinzugefügt
geo $ip_list { default 0; #设置默认值为0 192.168.1.0/24 1; 10.1.0.0/16 1; } server { listen 8081; server_name 192.168.152.100; location / { root /var/www/test; index index.html index.htm index.php; if ( $ip_list = 0 ) { #判断默认值,如果值为0,可访问,这时上面添加的IP为黑名单。 #白名单,将设置$ip_list = 1,这时上面添加的IP为白名单。 proxy_pass http://192.168.152.100:8081; }
Sie können auch die Datei IP-Konfiguration lesen
geo $ip_list { default 0; #设置默认值为0 include ip_white.conf; } server { listen 8081; server_name 192.168.152.100; location / { root /var/www/test; index index.html index.htm index.php; if ( $ip_list = 0 ) { return 403; #限制的IP返回值为403,也可以设置为503,504其他值。 #建议设置503,504这样返回的页面不会暴露nginx相关信息,限制的IP看到的信息只显示服务器错误,无法判断真正原因。 }
Erstellen Sie ip_list.conf im Verzeichnis /etc/nginx und sehen Sie sich nach dem Hinzufügen der IP Folgendes an:
cat /etc/nginx/ip_list.conf 192.168.152.1 1; 192.168.150.0/24 1;
Bei der Einstellung wird die IP-Listendatei ip_list.conf als Whitelist verwendet. Wenn die angeforderte IP nicht in der Liste enthalten ist, wird die 403-Seite direkt zurückgegeben. Die Einstellungsmethode für die Blacklist ist dieselbe.
3. ngx_http_geo_module Lastausgleich (Erweiterung)
Beispiel:
Wenn es drei Server gibt: 122.11.11.11, 133.11.12.22, 144.11.11.33
geo $country { default default; 111.11.11.0/24 uk; #IP段定义值uk 111.11.12.0/24 us; #IP段定义值us } upstream uk.server { erver 122.11.11.11:9090; #定义值uk的IP直接访问此服务器 } upstream us.server { server 133.11.12.22:9090; #定义值us的IP直接访问此服务器 } upstream default.server { server 144.11.11.33:9090; #默认的定义值default的IP直接访问此服务器 } server { listen 9090; server_name 144.11.11.33; location / { root /var/www/html/; index index.html index.htm; } }
Dann in
Zweitens, Länder- und Regions-IP-Zugriffsbeschränkung
1: Installieren Sie das Modul ngx_http_geoip_module.
nginx erstellt dieses Modul nicht standardmäßig, es sollte mit dem Konfigurationsparameter --with-http_geoip_module aktiviert werden.
Für Ubuntu-Systeme installieren Sie die Nginx-Extras-Komponenten direkt, einschließlich fast aller Module.
sudo apt install nginx-extras
Für das Centos-System installieren Sie das Modul.
yum install nginx-module-geoip
2. Laden Sie die IP-Datenbank herunter
MaxMind bietet eine kostenlose geografische IP-Datenbank. Die schlechte Nachricht ist, dass MaxMind die Unterstützung der IP-Datenbank im dat-Format offiziell eingestellt hat.
Sie können Dateien im DAT-Format an anderen Orten oder in alten Versionen finden. Natürlich sind die Daten möglicherweise nicht die neuesten und es gibt einige Fehler.
Der Download enthält Länder- und Stadtversionen von IPv4 und IPv6.
#下载国家IP库,解压并移动到nginx配置文件目录, sudo wget https://dl.miyuru.lk/geoip/maxmind/country/maxmind.dat.gz gunzip maxmind.dat.gz sudo mv maxmind.dat /etc/nginx/GeoCountry.dat sudo wget https://dl.miyuru.lk/geoip/maxmind/city/maxmind.dat.gz gunzip maxmind.dat.gz sudo mv maxmind.dat /etc/nginx/GeoCity.dat
3. Nginx konfigurieren
geoip_country /etc/nginx/GeoCountry.dat; geoip_city /etc/nginx/GeoCity.dat; server { listen 80; server_name 144.11.11.33; location / { root /var/www/html/; index index.html index.htm; if ($geoip_country_code = CN) { return 403; #中国地区,拒绝访问。返回403页面 } } }
Hier sind die regionalen und länderspezifischen Grundeinstellungen abgeschlossen.
Geoip andere Parameter:
Länderbezogene Parameter:$geoip_country_code #Zweistelliger englischer Ländercode. Beispiel: CN, US$geoip_country_code3 #Dreistelliger englischer Ländercode. Zum Beispiel: CHN, USA
$geoip_country_name #Der vollständige englische Name des Landes. Beispiel: China, Vereinigte Staaten
Stadtbezogene Parameter:
$geoip_city_country_code # ist ebenfalls ein zweistelliger englischer Ländercode.
$geoip_city_country_code3 #Wie oben
$geoip_city_country_name #Wie oben.
$geoip_region #Dies wurde als zweistellige Zahl getestet, z. B. 02 für Hangzhou und 23 für Shanghai. Es wurden jedoch keine relevanten Informationen gefunden. Ich hoffe, dass Freunde, die davon wissen, eine Nachricht hinterlassen können.
$geoip_city #Der englische Name der Stadt. Zum Beispiel: Hangzhou
$geoip_postal_code #Die Postleitzahl der Stadt. Nach dem Test ist dieses Feld in China leer
$geoip_city_continent_code #Ich weiß nicht, wofür es verwendet wird, aber es scheint AS in China zu sein
$geoip_latitude #Latitude
$geoip_longitude #Longitude
Das obige ist der detaillierte Inhalt vonWie legen Websites über Nginx IP-Beschränkungen für die Black-/Whitelist sowie IP-Zugriffsbeschränkungen für Länder und Städte fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!