Rumah > Operasi dan penyelenggaraan > Nginx > Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan

Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan

王林
Lepaskan: 2023-11-08 11:18:26
asal
1228 orang telah melayarinya

Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan

Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan memerlukan contoh kod khusus

Pengenalan:
Dengan perkembangan Internet, sudah menjadi perkara biasa bagi pengguna dari kawasan yang berbeza untuk mengakses tapak web. Kadangkala, kami ingin melaksanakan beberapa konfigurasi kawalan akses disasarkan berdasarkan lokasi geografi sumber permintaan. Sebagai pelayan proksi terbalik berprestasi tinggi, Nginx bukan sahaja boleh melaksanakan pengimbangan beban dan cache HTTP, tetapi juga mengkonfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan. Artikel ini akan memperkenalkan cara menggunakan Nginx untuk melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan dan memberikan contoh kod khusus.

1. Dapatkan lokasi geografi sumber permintaan
Sebelum melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan, kami perlu mendapatkan maklumat lokasi geografi sumber permintaan. Kaedah biasa ialah menggunakan pangkalan data IP pihak ketiga untuk menanyakan lokasi geografi yang sepadan dengan alamat IP yang diminta.

1.1 Muat turun pangkalan data IP
Pertama, kita perlu memuat turun pangkalan data IP, yang mengandungi hubungan pemetaan antara alamat IP dan lokasi geografi. Pada masa ini, pangkalan data IP yang lebih biasa digunakan termasuk pangkalan data GeoIP2 MaxMind dan pangkalan data IP Taobao. Dalam artikel ini, kami menggunakan pangkalan data GeoIP2 MaxMind untuk demonstrasi.

Anda boleh memuat turun fail pangkalan data GeoIP2 (biasanya fail .mmdb) di tapak web rasmi MaxMind dan menyimpannya secara setempat.

1.2 Pasang modul GeoIP2
Seterusnya, kita perlu memasang modul GeoIP2 dalam Nginx untuk menggunakan pangkalan data untuk menanyakan maklumat lokasi geografi yang sepadan dengan alamat IP yang diminta.

Pertama, buka direktori kod sumber Nginx dan masukkan direktori ngx_http_geoip2_module di bawah folder modul. Jalankan arahan berikut untuk memuat turun modul GeoIP2:

git clone https://github.com/leev/ngx_http_geoip2_module.git
Salin selepas log masuk

Kemudian, kembali ke direktori sumber Nginx dan laksanakan arahan konfigurasi untuk mengkonfigurasi pilihan kompilasi:

./configure --add-module=modules/ngx_http_geoip2_module
Salin selepas log masuk

Akhir sekali, laksanakan arahan buat dan buat pemasangan untuk menyusun dan memasang Nginx.

1.3 Konfigurasikan modul GeoIP2
Dalam fail konfigurasi Nginx, kita perlu mengkonfigurasi modul GeoIP2 untuk memberitahu Nginx untuk menanyakan maklumat lokasi geografi alamat IP daripada fail pangkalan data yang ditentukan.

Tambah konfigurasi berikut dalam blok http:

geoip2 /path/to/your/database/GeoLite2-Country.mmdb {
    $geoip2_data_country_code country iso_code;
}
Salin selepas log masuk

Di sini "/path/to/your/database/GeoLite2-Country.mmdb" ialah laluan ke fail pangkalan data GeoIP2 yang anda muat turun. "$geoip2_data_country_code" ialah pembolehubah yang akan menyimpan hasil pertanyaan "country" menunjukkan bahawa pertanyaan ialah kod negara dan "iso_code" menunjukkan nama medan di mana keputusan disimpan dalam pembolehubah.

  1. Konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan
    Selepas mendapatkan maklumat lokasi geografi sumber permintaan, kami boleh mengkonfigurasi kawalan akses mengikut keperluan.

2.1 Benarkan akses ke lokasi geografi tertentu

location / {
    if ($geoip2_data_country_code = "CN") {
        allow;
    }
    deny;
}
Salin selepas log masuk

Dalam konfigurasi ini, kami menggunakan arahan if dan pembolehubah $geoip2_data_country_code untuk menentukan sama ada lokasi geografi yang diminta ialah China (kod ialah "CN"). Jika ia adalah China, akses dibenarkan jika tidak, akses ditolak.

2.2 Melarang akses ke lokasi geografi tertentu

location / {
    if ($geoip2_data_country_code = "US") {
        deny;
    }
    allow;
}
Salin selepas log masuk

Dalam konfigurasi ini, jika lokasi geografi yang diminta ialah Amerika Syarikat (kod ialah "AS"), akses akan ditolak terus jika tidak, akses akan dibenarkan.

2.3 Konfigurasi kawalan akses lain
Selain kawalan akses berdasarkan kod negara, ia juga boleh dikonfigurasikan berdasarkan maklumat lokasi geografi tertentu. Sebagai contoh, kawalan akses boleh dilakukan berdasarkan bandar, latitud, longitud dan maklumat lain.

location / {
    if ($geoip2_data_city_name = "Shanghai" && $geoip2_data_latitude > 31.2 && $geoip2_data_latitude < 31.3) {
        allow;
    }
    deny;
}
Salin selepas log masuk

Dalam konfigurasi ini, kami menentukan sama ada lokasi geografi yang diminta ialah Shanghai dan latitud adalah antara 31.2 dan 31.3. Jika syarat dipenuhi, akses dibenarkan jika tidak, akses ditolak.

Kesimpulan:
Dengan menggunakan modul GeoIP2 Nginx, kami boleh melaksanakan konfigurasi kawalan akses dengan mudah berdasarkan lokasi geografi sumber permintaan. Mula-mula, kami memuat turun pangkalan data IP untuk menanyakan maklumat lokasi geografi alamat IP. Kemudian, pasang dan konfigurasikan modul GeoIP2 supaya Nginx boleh menggunakan pangkalan data ini untuk menanyakan maklumat lokasi geografi. Akhir sekali, konfigurasi kawalan akses dilakukan berdasarkan hasil pertanyaan, dan kawalan akses berdasarkan lokasi geografi sumber permintaan dilaksanakan.

Sudah tentu, ini hanyalah contoh mudah dan senario aplikasi sebenar mungkin lebih kompleks. Dalam penggunaan sebenar, kami juga boleh menggabungkan modul dan fungsi lain, seperti proksi terbalik HTTP, pengimbangan beban, dll., untuk mencapai konfigurasi kawalan akses yang lebih fleksibel dan cekap.

Contoh kod:

geoip2 /path/to/your/database/GeoLite2-Country.mmdb {
    $geoip2_data_country_code country iso_code;
}

location / {
    if ($geoip2_data_country_code = "CN") {
        allow;
    }
    deny;
}
Salin selepas log masuk

Di atas ialah pengenalan terperinci dan contoh kod khusus menggunakan Nginx untuk melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan. Dengan cara ini, kami boleh mengawal akses dengan mudah berdasarkan lokasi geografi permintaan dan meningkatkan keselamatan dan kebolehpercayaan tapak web. Harap artikel ini membantu anda!

Atas ialah kandungan terperinci Cara Nginx melaksanakan konfigurasi kawalan akses berdasarkan lokasi geografi sumber permintaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan