nginx propose plusieurs façons de configurer les listes noire et blanche. Voici seulement deux méthodes couramment utilisées.
deny et autoriser les instructions appartiennent à ngx_http_access_module. nginx charge ce module par défaut, il peut donc être utilisé directement.
Cette méthode est la plus simple et la plus directe. Configurez un pare-feu similaire à iptable. Comment utiliser :
Ajoutez directement dans le fichier de configuration :
#白名单设置,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; }
Ou configurez la liste blanche en lisant le fichier IP
location /{ include /home/whitelist.conf; #默认位置路径为/etc/nginx/ 下, #如直接写include whitelist.conf,则只需要在/etc/nginx目录下创建whitelist.conf deny all; }
Créez whitelist.conf dans le répertoire /home/ et écrivez les informations. qui doit être ajouté à l'adresse IP de la liste blanche, après l'avoir ajouté, affichez ce qui suit :
cat /home/whitelist.conf #白名单IP allow 10.1.1.10; allow 10.1.1.11;
Le paramétrage de la liste blanche est terminé et la méthode de paramétrage de la liste noire est la même.
Par défaut, ce module est généralement ajouté à nginx, ngx_http_geo_module : Document officiel, les paramètres doivent être définis dans le module http.
Ce module peut définir des restrictions IP et des restrictions de pays et de région. L'emplacement peut être à l'extérieur du module serveur.
Exemple de syntaxe :
Le fichier de configuration est ajouté directement
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; }
Vous pouvez également lire le fichier de configuration IP
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看到的信息只显示服务器错误,无法判断真正原因。 }
Créez ip_list.conf dans le répertoire /etc/nginx Après avoir ajouté l'IP, affichez ce qui suit :
cat /etc/nginx/ip_list.conf 192.168.152.1 1; 192.168.150.0/24 1;
Lors du réglage Une fois terminé, le fichier de liste IP ip_list.conf sera utilisé comme liste blanche. Si l'IP demandée n'est pas dans la liste, la page 403 sera renvoyée directement. La méthode de définition de la liste noire est la même.
ngx_http_geo_module, le module peut également être utilisé pour l'équilibrage de charge. Par exemple, un cluster Web a des serveurs dans différentes régions et la charge du segment IP d'une certaine région est équilibrée pour les serveurs d'accès. une certaine région. Une manière similaire consiste à ajouter des valeurs personnalisées derrière l'adresse IP. Ces valeurs ne se limitent pas aux chiffres, mais peuvent également utiliser des lettres, telles que US, CN, etc.
Exemple:
If il y a trois serveurs: 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; } }
then dans le deuxième, le pays et la région IP d'accès à la restriction pour les deux services tiers tels que Cloudflare fournissent également options de configuration à activer La configuration des règles de pare-feu est plus pratique. Nous parlons ici de la façon de configurer nginx.
ngx_http_geoip_module : Document officiel, les paramètres doivent être définis dans le module http.
Pour les systèmes Ubuntu, installez directement les composants nginx-extras, y compris presque tous les modules.
sudo apt install nginx-extras
Pour le système centos, installez le module.
yum install nginx-module-geoip
2. Téléchargez la base de données IP
Ce module dépend de la base de données IP. Toutes les données sont lues dans cette base de données et la bibliothèque IP (format dat) doit être téléchargée.
Vous pouvez trouver des fichiers au format DAT à d'autres endroits, ou dans d'anciennes versions. Bien sûr, les données peuvent ne pas être les plus récentes et il y a quelques erreurs.
Le téléchargement inclut les versions par pays et par ville d'Ipv4 et d'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. Configurez nginx
Exemple :
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页面 } } }
Autres paramètres Geoip :
Paramètres liés au pays :$geoip_country_code #Code de pays anglais à deux caractères. Par exemple : CN, US
$geoip_country_code3 #Indicatif de pays anglais à trois caractères. Tels que : CHN, USA$geoip_country_name #Le nom anglais complet du pays. Par exemple : Chine, États-UnisParamètres liés à la ville :
$geoip_city_country_code # est également un code de pays anglais à deux caractères.
$geoip_city_country_code3 #Identique à ci-dessus
$geoip_city_country_name #Identique à ci-dessus.
$geoip_region #Il a été testé comme étant un nombre à deux chiffres, tel que 02 pour Hangzhou et 23 pour Shanghai. Cependant, aucune information pertinente n'a été trouvée. J'espère que les amis qui sont au courant pourront laisser un message.
$geoip_city #Le nom anglais de la ville. Par exemple : Hangzhou
$geoip_postal_code #Le code postal de la ville. Après tests, ce champ est vide en Chine
$geoip_city_continent_code #Je ne sais pas à quoi il sert, mais il semble que ce soit AS en Chine
$geoip_latitude #Latitude
$geoip_longitude #Longitude
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!