Heim >Betrieb und Instandhaltung >Nginx >So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

王林
王林nach vorne
2023-05-23 19:13:432101Durchsuche

    Verwenden Sie Nginx, um den Zugriff bestimmter IPs und ausländischer IPs auf meine Website zu verhindern.

    Es gibt viele Möglichkeiten, diese Funktion zu implementieren. Jetzt werde ich das auf Nginx basierende Modul ngx_http_geoip2 vorstellen, um den Zugriff ausländischer IPs auf die Website zu verhindern.

    ①Geoip2-Erweiterungsabhängigkeiten installieren:

    [root@fxkj ~]# yum install libmaxminddb-devel -y

    ②Laden Sie das ngx_http_geoip2_module-Modul herunter:

    [root@fxkj tmp]#  git clone https://github.com/leev/ngx_http_geoip2_module.git
    [ro tmp]#

    ③Extrahieren Sie das Modul in den angegebenen Pfad

    Ich entpacke es in das /usr/local-Verzeichnis:

    [root@fxkj tmp]# mv ngx_http_geoip2_module/ /usr/local/
    [root@fxkj local]# ll ngx_http_geoip2_module/
    total 60
    -rw-r--r-- 1 root root  1199 Aug 13 17:20 config
    -rw-r--r-- 1 root root  1311 Aug 13 17:20 LICENSE
    -rw-r--r-- 1 root root 23525 Aug 13 17:20 ngx_http_geoip2_module.c
    -rw-r--r-- 1 root root 21029 Aug 13 17:20 ngx_stream_geoip2_module.c
    -rw-r--r-- 1 root root  3640 Aug 13 17:20 README.md

    ④Installieren Sie das. nginx Modul

    Zuallererst Down-Umgebung, meine Nginx-Version ist 1.16. Ich habe online überprüft, dass für die Installation des ngx_http_geoip2-Moduls mindestens Version 1.18 und höher erforderlich ist. Daher habe ich für diese Installation ein Upgrade von nginx1.18 durchgeführt und das ngx_http_geoip2-Modul hinzugefügt.

    Nginx 1.18-Version herunterladen:

    [root@fxkj ~]# yum install libmaxminddb-devel -y

    Entpacken Sie das Nginx1.18-Paket, aktualisieren Sie auf Nginx1.18 und fügen Sie das Modul ngx_http_geoip2 hinzu.

    Hinweis:

    • Um Nginx zu aktualisieren und Module hinzuzufügen, müssen Sie nur den Make-Vorgang kompilieren und dann ausführen. Wenn Sie make install ausführen, ersetzt die neue Version von Nginx das Online-Nginx vollständig.

    • Vor dem Kompilieren müssen Sie überprüfen, welche Module derzeit in Nginx installiert sind.

    [root@fxkj tmp]# /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.16.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
    built with OpenSSL 1.0.2k-fips 26 Jan 2017
    TLS SNI support enabled
    configure arguments: –with-http_stub_status_module –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_ssl_module –with-stream

    Kompilieren und installieren:

    [root@fxkj tmp]# tar -xf nginx-1.18.0.tar.gz
    [root@fxkj tmp]# cd nginx-1.18.0/
    [root@fxkj nginx-1.18.0]# ./configure --with-http_stub_status_module \
     --prefix=/usr/local/nginx \
     --user=nginx --group=nginx --with-http_ssl_module --with-stream \
     --add-module=/usr/local/ngx_http_geoip2_module
    [root@fxkj nginx-1.18.0]# make
    [root@fxkj nginx-1.18.0]# cp /usr/loca/nginx/sbin/nginx /usr/loca/nginx/sbin/nginx1.16    #备份
    [root@fxkj nginx-1.18.0]# cp objs/nginx /usr/local/nginx/sbin/    #用新的去覆盖旧的
    [root@fxkj nginx-1.18.0]# pkill nginx     #杀死nginx
    [root@fxkj nginx-1.18.0]# /usr/local/nginx/sbin/nginx    #再次启动Nginx

    Überprüfen Sie die Nginx-Version und die installierten Module:

    [root@fxkj nginx-1.18.0]# /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.18.0
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)
    built with OpenSSL 1.0.2k-fips 26 Jan 2017
    TLS SNI support enabled
    configure arguments: –with-http_stub_status_module –prefix=/usr/local/nginx –user=nginx –group=nginx –with-http_ssl_module –with-stream –add-module=/usr/local/ngx_http_geoip2_module

    ⑤Laden Sie die neueste IP-Adressdatenbankdatei herunter

    Nach erfolgreicher Installation des Moduls müssen Sie auch die Datenbank in Nginx angeben und installieren Laufzeitbibliothek Zwei sind standardmäßig installiert und befinden sich im Verzeichnis /usr/share/GeoIP/, eine verfügt nur über IPv4 und die andere umfasst IPv4 und IPv6.

    Betreten Sie die Website www.maxmind.com, registrieren Sie ein Konto und laden Sie die neuesten Bibliotheksdateien herunter. Klicken Sie links auf Dateien herunterladen, überspringen Sie die Schritte zur Kontoerstellung. Wählen Sie das GeoLite2-Land aus und klicken Sie auf GZIP herunterladen, um Folgendes herunterzuladen:

    So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

    Nach /usr/share/GeoIP/ hochladen und entpacken:

    [root@fxkj local]# cd /usr/share/GeoIP/
    [root@fxkj GeoIP]# ll
    total 69612
    lrwxrwxrwx. 1 root root       17 Mar  7  2019 GeoIP.dat -> GeoIP-initial.dat
    -rw-r--r--. 1 root root  1242574 Oct 30  2018 GeoIP-initial.dat
    lrwxrwxrwx. 1 root root       19 Mar  7  2019 GeoIPv6.dat -> GeoIPv6-initial.dat
    -rw-r--r--. 1 root root  2322773 Oct 30  2018 GeoIPv6-initial.dat
    -rw-r--r--  1 root root  3981623 Aug 12 02:37 GeoLite2-Country.mmdb

    ⑥Konfiguration Nginx-Konfiguration fileSo verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

    Sichern Sie die Konfigurationsdatei, bevor Sie sie ändern:

    [root@fxkj ~]# cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf-bak
    [root@fxkj ~]# vim /usr/local/nginx/conf/nginx.conf

    Fügen Sie ein paar Zeilen in http hinzu, um den Speicherort der Datenbankdatei zu definieren:

    Fügen Sie Bedingungen unter dem Speicherort auf dem Server hinzu , dann Führen Sie die folgende Rückgabeaktion aus. Ich habe hier 3 Typen definiert und zwei davon kommentiert.

    Wenn es sich bei der IP, auf die zugegriffen wird, um eine fremde IP handelt, wird 404 direkt zurückgegeben:

    geoip2 /usr/share/GeoIP/GeoLite2-City.mmdb {
    auto_reload 5m;
    $geoip2_data_country_code country iso_code;
    }
      map $geoip2_data_country_code $allowed_country {
                    default yes;
                    CN no;
    }
    So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

    Überprüfen Sie nach der Änderung die Konfigurationsdatei und laden Sie Nginx neu:

    if ($allowed_country = yes) {
           # return https://www.baidu.com;
           # return /home/japan;
            return 404;
     }

    ⑦Simulationstestüberprüfung

    So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf NginxVerwenden Sie den Server des ausländischen Knotens, um Greifen Sie auf die Website zu, hier kommt meine IP aus Südkorea:

    Sie können den Fehler 404 Not Found sehen, wenn Sie auf die Website zugreifen:

    So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

    Schauen wir uns das Zugriffsprotokoll von nginx an:

    [root@fxkj ~]# /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    [roo@fxkj ~]# /usr/local/nginx/sbin/nginx -s reload

    So verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx

    Das obige ist der detaillierte Inhalt vonSo verbieten Sie bestimmten IPs und ausländischen IPs den Zugriff auf die Website basierend auf Nginx. 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