Nginx ialah pelayan web berprestasi tinggi dan pelayan proksi terbalik Keupayaan konfigurasinya yang berkuasa membolehkan Nginx digunakan dalam pelbagai senario yang berbeza. Antaranya, konfigurasi ACL berdasarkan kata kerja dan laluan HTTP adalah kaedah yang biasa digunakan dalam proksi terbalik Nginx Artikel ini akan memperkenalkan prinsip dan kaedah pelaksanaannya.
1. Konsep ACL
ACL (Senarai Kawalan Akses) ialah senarai kawalan akses, iaitu teknologi kawalan akses berasaskan peraturan. Dengan mentakrifkan beberapa peraturan, pelawat yang berbeza boleh dibezakan dan mempunyai kawalan akses yang berbeza.
Dalam proksi songsang Nginx, ACL boleh digunakan untuk membezakan permintaan yang berbeza untuk melaksanakan strategi proksi songsang yang berbeza. Khususnya, permintaan boleh diklasifikasikan dan dimajukan ke pelayan bahagian belakang yang berbeza dengan memadankan kata kerja dan laluan permintaan HTTP.
2. Pemadanan kata kerja dan laluan HTTP
Protokol HTTP mentakrifkan beberapa kata kerja HTTP yang biasa digunakan, seperti GET, POST, PUT, DELETE, dsb. Kata kerja HTTP boleh digunakan untuk menunjukkan jenis permintaan klien, yang boleh diperolehi melalui pembolehubah $request_method dalam konfigurasi Nginx.
Selain kata kerja HTTP, laluan juga merupakan faktor penting dalam menentukan jenis permintaan. Laluan boleh digunakan untuk mewakili lokasi sumber yang diminta, yang boleh diperolehi melalui pembolehubah $request_uri dalam konfigurasi Nginx.
3. Kaedah konfigurasi berasaskan ACL
Dalam Nginx, anda boleh menggunakan pernyataan if untuk membina peraturan ACL. Sintaks pernyataan if adalah seperti berikut:
if (condition) {
// do something
}
Di mana, condition ialah ungkapan yang digunakan untuk menentukan sama ada permintaan semasa mematuhi peraturan. Jika peraturan dipenuhi, tindakan dalam blok kod yang disertakan dalam pendakap kerinting dilakukan.
Dalam konfigurasi ACL berdasarkan kata kerja dan laluan HTTP, padanan peraturan boleh dicapai melalui penyarangan pernyataan if. Khususnya, anda boleh menilai kata kerja HTTP dahulu, dan kemudian menilai laluannya. Kod sampel adalah seperti berikut:
if ($request_method = 'GET') {
if ($request_uri = '/users') { proxy_pass http://backend1; } if ($request_uri = '/orders') { proxy_pass http://backend2; }
}
if ($request_method = 'POST') {
if ($request_uri = '/users') { proxy_pass http://backend3; } if ($request_uri = '/orders') { proxy_pass http://backend4; }
}
Dalam kod contoh di atas, tentukan dahulu sama ada kata kerja HTTP ialah GET atau POST, kemudian tentukan laluan, dan akhirnya pilih pelayan hujung belakang yang berbeza untuk pemajuan berdasarkan hasil yang sepadan.
4. Pengoptimuman peraturan ACL
Walaupun pernyataan if boleh digunakan untuk melaksanakan konfigurasi ACL berdasarkan kata kerja dan laluan HTTP, pernyataan if juga mempunyai beberapa kelemahan. Khususnya, peraturan padanan dalam pernyataan if dipadankan mengikut tertib Jika terdapat sejumlah besar peraturan, kecekapan pemadanan akan menjadi sangat rendah.
Untuk menyelesaikan masalah ini, anda boleh menggunakan arahan peta Nginx untuk pengoptimuman. Arahan peta boleh memetakan pembolehubah yang berbeza kepada nilai yang berbeza, dengan itu memudahkan perhubungan bersarang bagi pernyataan if dan dengan itu meningkatkan kecekapan pemadanan.
Berikut ialah kod contoh konfigurasi ACL berdasarkan arahan peta:
peta $request_method$request_uri $backend {
default http://backend0; GET/users http://backend1; GET/orders http://backend2; POST/users http://backend3; POST/orders http://backend4;
}
pelayan {
... location / { proxy_pass $backend; } ...
}
Dalam kod contoh di atas, arahan peta memetakan gabungan pembolehubah $request_method dan $request_uri kepada nilai pembolehubah $backend yang berbeza. Dalam arahan proxy_pass berikut, pembolehubah $backend digunakan secara langsung untuk memajukan permintaan.
5. Ringkasan
Konfigurasi ACL berdasarkan kata kerja dan laluan HTTP ialah teknologi yang biasa digunakan dalam proksi terbalik Nginx, yang boleh digunakan untuk mengklasifikasikan permintaan yang berbeza dan memajukannya ke pelayan bahagian belakang yang berbeza. Dalam proses pelaksanaan khusus, anda boleh menggunakan pernyataan if atau arahan peta untuk memadankan peraturan. Terutama untuk peraturan ACL yang lebih kompleks, menggunakan arahan peta boleh meningkatkan kecekapan pemadanan dan dengan itu meningkatkan prestasi sistem.
Atas ialah kandungan terperinci Kata kerja HTTP dan konfigurasi ACL berasaskan laluan dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!