Rumah > Artikel > Operasi dan penyelenggaraan > Konfigurasi ACL berasaskan URI dalam proksi terbalik Nginx
Nginx ialah pelayan web berprestasi tinggi sumber terbuka dan pelayan proksi terbalik yang boleh mengendalikan sejumlah besar permintaan serentak dengan mudah. Nginx menyepadukan pelbagai modul berfungsi, antaranya ACL (Senarai Kawalan Akses) ialah kaedah konfigurasi yang penting. ACL membenarkan pentadbir mengawal pengguna atau alamat IP yang boleh mengakses pelayan Nginx, dengan itu meningkatkan keselamatan dan kebolehpercayaan pelayan web. Artikel ini akan memperkenalkan cara menggunakan konfigurasi ACL dalam proksi terbalik Nginx untuk mengawal kebenaran akses berdasarkan URI.
ACL, nama penuh ialah Senarai Kawalan Akses, nama Cina ialah Senarai Kawalan Akses, yang merupakan cara teknikal untuk mengawal hak akses. Ia membenarkan atau menafikan akses kepada pengguna atau alamat IP tertentu, dengan itu melindungi pelayan web anda daripada serangan berniat jahat.
Terdapat dua cara untuk melaksanakan ACL dalam Nginx, satu adalah ACL berdasarkan alamat IP, dan satu lagi adalah ACL berdasarkan URI. Artikel ini akan menumpukan pada ACL berasaskan URI.
ACL berasaskan URI ialah cara yang agak biasa dan fleksibel untuk mengawal kebenaran akses. Dengan menapis URI yang diminta, hak akses pengguna boleh dikawal mengikut kategori.
Mari kita lihat contoh khusus. Katakan aplikasi web kami mempunyai dua modul, satu modul pengurusan latar belakang dan satu lagi modul pengguna hadapan. URI akses untuk kedua-dua modul ini adalah berbeza.
Kami boleh menggunakan fungsi ACL Nginx untuk bekerjasama dengan modul proksi terbalik untuk mencapai kawalan akses kedua-dua modul ini. Mula-mula, kita perlu menambah peraturan ACL berikut pada fail konfigurasi Nginx:
lokasi / {
proxy_pass http://backend; allow 192.168.1.0/24; # 允许192.168.1.0/24网段的访问 deny all; # 拒绝其他所有IP地址的访问
}
lokasi /admin {
proxy_pass http://backend; allow 192.168.1.10; # 允许指定IP地址的访问 deny all; # 拒绝其他所有IP地址的访问
}
Dalam konfigurasi di atas, kami menetapkan peraturan ACL yang berbeza untuk semua URI dan /admin URI. Untuk semua URI, kami hanya membenarkan alamat IP dalam segmen rangkaian 192.168.1.0/24 boleh diakses. Untuk /admin URI, kami hanya membenarkan alamat IP yang ditentukan untuk diakses dan alamat IP lain ditolak.
Perlu diingatkan bahawa susunan peraturan ACL adalah sangat penting. Nginx pertama kali sepadan dengan URI terpanjang Jika perlawanan berjaya, peraturan ACL yang sepadan dengan URI digunakan. Jika URI sepadan dengan berbilang peraturan ACL, peraturan ACL sepadan pertama akan digunakan.
Selain konfigurasi ACL berasaskan URI, Nginx juga menyokong konfigurasi ACL berasaskan ungkapan biasa. Kaedah ini lebih fleksibel dan boleh disesuaikan mengikut keperluan yang berbeza.
Mari kita lihat contoh. Katakan kita perlu mengawal akses kepada semua URI bermula dengan /api, kita boleh menggunakan konfigurasi ACL berikut:
lokasi ~ ^/api/(.*)$ {
proxy_pass http://backend; allow 192.168.1.0/24; # 允许192.168.1.0/24网段的访问 deny all; # 拒绝其他所有IP地址的访问
}
Dalam konfigurasi di atas, kami menggunakan ungkapan biasa untuk memadankan semua URI bermula dengan /api dan menetapkan peraturan ACL yang sepadan.
Perlu diambil perhatian bahawa menggunakan ungkapan biasa untuk konfigurasi ACL boleh menyebabkan beberapa overhed prestasi. Oleh itu, kami mengesyorkan menggunakan konfigurasi ACL berasaskan URI apabila boleh.
ACL ialah cara yang sangat penting untuk mengawal kebenaran akses dalam proksi terbalik Nginx. Konfigurasi ACL berasaskan URI boleh menetapkan kebenaran akses yang berbeza untuk URI yang berbeza. Konfigurasi ACL berdasarkan ungkapan biasa adalah lebih fleksibel dan boleh disesuaikan mengikut keperluan yang berbeza. Untuk senario aplikasi yang berbeza, kita boleh memilih kaedah konfigurasi ACL yang berbeza. Pada masa yang sama, untuk meningkatkan prestasi, kita harus cuba mengelak daripada menggunakan ungkapan biasa yang kompleks untuk konfigurasi ACL.
Atas ialah kandungan terperinci Konfigurasi ACL berasaskan URI dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!