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?

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?

WBOY
WBOYnach vorne
2023-06-01 17:27:303523Durchsuche

    1. Black/White-List-IP-Zugriffsbeschränkungskonfiguration

    nginx bietet mehrere Möglichkeiten, Black- und White-Listen zu konfigurieren. Hier sind nur zwei häufig verwendete Methoden.

    1. Die ersten Methoden: Zulassen, Verweigern und Zulassen gehören standardmäßig zu ngx_http_access_module, sodass es direkt verwendet werden kann.

    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

    Standardmäßig wird dieses Modul im Allgemeinen zu Nginx hinzugefügt, ngx_http_geo_module: Offizielles Dokument, die Parameter müssen im http-Modul festgelegt werden.

    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)

    ngx_http_geo_module, das Modul kann beispielsweise auch für den Lastausgleich verwendet werden, und das IP-Segment einer bestimmten Region wird auf die zugreifenden Server verteilt eine bestimmte Region. Eine ähnliche Möglichkeit besteht darin, benutzerdefinierte Werte hinter der IP hinzuzufügen. Diese Werte sind nicht auf Zahlen beschränkt, sondern es können auch Buchstaben wie US, CN usw. verwendet werden.

    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

    Einige Dienste von Drittanbietern wie Cloudfla re auch zur Verfügung stellen Das Festlegen von Optionen zum Aktivieren des Einrichtens von Firewall-Regeln ist bequemer. Hier sprechen wir darüber, wie man Nginx einrichtet.

    1: Installieren Sie das Modul ngx_http_geoip_module.

    ngx_http_geoip_module: Offizielles Dokument, die Parameter müssen im http-Modul festgelegt werden.

    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

    Dieses Modul hängt von der IP-Datenbank ab. Alle Daten werden in dieser Datenbank gelesen und die IP-Bibliothek (DAT-Format) muss heruntergeladen werden.

    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

    Beispiel:

    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!

    Stellungnahme:
    Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen