Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

王林
王林ke hadapan
2023-05-23 19:13:432032semak imbas

    Gunakan Nginx untuk melarang IP tertentu dan IP asing daripada mengakses tapak web saya

    Terdapat banyak cara untuk mencapai fungsi ini di bawah saya akan memperkenalkan yang berasaskan pada modul Nginx ngx_http_geoip2 untuk menghalang IP asing daripada mengakses laman web.

    ①Pasang pergantungan sambungan geoip2:

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

    ②Muat turun modul ngx_http_geoip2_module:

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

    ③Ekstrak modul ke laluan yang ditentukan

    Saya nyahzip di sini Di bawah direktori tempatan:

    [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

    ④Pasang modul nginx

    Pertama sekali, terangkan versi nginx saya ialah 1.16. Saya telah menyemak dalam talian bahawa memasang modul ngx_http_geoip2 memerlukan sekurang-kurangnya versi 1.18 dan di atas, jadi ini Semasa pemasangan pertama, saya menaik taraf nginx1.18 dan menambah modul ngx_http_geoip2.

    Muat turun versi nginx 1.18:

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

    Nyahzip pakej nginx1.18, naik taraf kepada nginx1.18 dan tambah modul ngx_http_geoip2.

    Nota:

    • Untuk menaik taraf nginx dan menambah modul, anda hanya perlu menyusun dan kemudian melaksanakan operasi buat. Jika anda melaksanakan make install, versi baru nginx akan menggantikan sepenuhnya nginx dalam talian.

    • Sebelum menyusun, anda perlu menyemak modul yang sedang dipasang dalam nginx.

    [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

    Kompil dan pasang:

    [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

    Lihat versi nginx dan modul yang dipasang:

    [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

    ⑤Muat turun fail pangkalan data alamat IP terkini

    Selepas modul berjaya dipasang, anda perlu menentukan pangkalan data dalam Nginx Apabila memasang pustaka runtime, dua dipasang secara lalai, terletak dalam direktori /usr/share/GeoIP/, satu hanya mempunyai IPv4, dan satu lagi termasuk. IPv4 dan IPv6.

    Masukkan laman web www.maxmind.com, daftar akaun dan dapatkan muat turun fail perpustakaan terkini. Klik Muat Turun Fail di sebelah kiri, langkau langkah penciptaan akaun

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Pilih Negara GeoLite2, klik Muat Turun GZIP untuk memuat turun:

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Muat naik ke /usr/share/GeoIP/ dan nyahzip:

    [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

    ⑥Konfigurasikan fail konfigurasi nginx

    Sandarkan fail konfigurasi sebelum mengubah suai:

    [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

    Dalam http Add a beberapa baris untuk menentukan lokasi fail pangkalan data:

    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;
    }

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Tambah syarat di bawah lokasi dalam pelayan Jika IP ialah IP asing, laksanakan tindakan kembali di bawah. Di sini saya Tiga jenis ditakrifkan dan dua daripadanya diberi anotasi.

    Apabila IP yang diakses ialah IP asing, 404 akan dikembalikan terus:

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

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Selepas pengubahsuaian, semak fail konfigurasi dan muat semula nginx:

    [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

    ⑦Pengesahan ujian simulasi

    Gunakan pelayan nod luar negara untuk mengakses tapak web saya di sini adalah dari Korea Selatan:

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Anda boleh. lihat Ralat 404 Tidak Ditemui semasa mengakses tapak web:

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Mari kita lihat log akses nginx:

    “13.125.1.194 – – [14/Aug/2020:16:15:51 +0800] “GET /favicon.ico HTTP/1.1” 404 548 “https://www.fxkjnj.com/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36”

    Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx

    Atas ialah kandungan terperinci Bagaimana untuk melarang IP tertentu dan IP asing daripada mengakses laman web berdasarkan Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan:
    Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam