cari
RumahOperasi dan penyelenggaraanNginxKonfigurasi ACL berdasarkan tingkah laku pengguna dalam proksi terbalik Nginx

Konfigurasi ACL berdasarkan tingkah laku pengguna dalam proksi terbalik Nginx

Jun 10, 2023 am 09:07 AM
nginxproksi terbalikkonfigurasi acl

Nginx ialah pelayan web berprestasi tinggi dan perisian pelayan proksi terbalik. Ia adalah perisian sumber terbuka yang boleh dijalankan pada pelbagai sistem pengendalian, seperti Linux, Windows, FreeBSD, dll. Nginx biasanya digunakan dalam proksi terbalik, pengimbangan beban, cache HTTP, pengesahan keselamatan dan senario lain. Dalam senario proksi terbalik, Nginx boleh memajukan permintaan pengguna kepada berbilang pelayan belakang untuk meningkatkan prestasi dan kebolehpercayaan sistem. Artikel ini akan memperkenalkan cara mengkonfigurasi ACL berdasarkan tingkah laku pengguna dalam proksi terbalik Nginx.

ACL ialah singkatan dari Access Control List, iaitu teknologi yang digunakan untuk kawalan akses. Dalam rangkaian, teknologi ACL digunakan secara meluas dalam tembok api, penghala, pelayan proksi dan peralatan lain. ACL boleh menyekat atau membenarkan akses pengguna berdasarkan keadaan yang berbeza, seperti alamat IP, nombor port, jenis protokol, dsb. Dalam proksi terbalik Nginx, ACL boleh mengehadkan atau membenarkan pemajuan permintaan berdasarkan ciri permintaan pengguna.

Sintaks konfigurasi ACL Nginx adalah seperti berikut:

location / {
    # allow或deny用于定义访问控制规则,如:
    allow ip; # 允许IP地址访问
    deny ip; # 禁止IP地址访问
    allow all; # 允许所有访问
    deny all; # 禁止所有访问
}

Antaranya, ip boleh menjadi alamat IP tunggal, segmen alamat IP atau alamat IP dalam format CIDR, seperti:

allow 192.168.1.1; # 允许单个IP地址访问
allow 192.168.0.0/16; # 允许IP地址段访问
allow 192.168.1.0/24; # 允许CIDR格式的IP地址访问

Selain IP Selain alamat, ACL juga menyokong syarat lain, seperti pengepala permintaan HTTP, kaedah permintaan, laluan permintaan, dsb. Dalam proksi terbalik Nginx, pengepala permintaan HTTP amat penting kerana ia boleh mewakili ciri tingkah laku pengguna.

Dalam aplikasi web moden, ciri tingkah laku pengguna menjadi semakin kompleks, memerlukan konfigurasi ACL yang lebih fleksibel dan pintar untuk kawalan akses. Sebagai contoh, kami mungkin perlu mengehadkan atau membenarkan pemajuan permintaan berdasarkan faktor seperti status log masuk pengguna, kekerapan permintaan, sumber permintaan, dsb. Dalam Nginx, kami boleh melaksanakan konfigurasi ACL berdasarkan tingkah laku pengguna dengan cara berikut.

  1. Berdasarkan pengepala permintaan

Dalam Nginx, kita boleh menggunakan pernyataan if untuk menyemak pengepala permintaan HTTP dan melaksanakan membenarkan atau menafikan arahan seperti yang diperlukan. Sebagai contoh, kami boleh menyekat akses kepada penyemak imbas atau sistem pengendalian tertentu dengan menyemak medan Ejen Pengguna dalam pengepala permintaan. Konfigurasi sampel adalah seperti berikut:

location / {
    if ($http_user_agent ~* MSIE) {
        deny all;
    }
    allow all;
}

Konfigurasi di atas bermakna semua pengguna yang Agen Penggunanya mengandungi "MSIE" dilarang mengakses dan pengguna lain dibenarkan mengakses.

  1. Berdasarkan Kuki

Dalam aplikasi web moden, pengguna biasanya perlu log masuk untuk mengakses sumber tertentu. Untuk mengehadkan akses kepada pengguna yang tidak log masuk, kami perlu menyemak medan Kuki dalam permintaan dan melaksanakan arahan membenarkan atau menolak seperti yang diperlukan. Sebagai contoh, kami boleh menyekat akses kepada pengguna yang tidak log masuk dengan menyemak medan Kuki dalam pengepala permintaan. Konfigurasi sampel adalah seperti berikut:

location /protected {
    if ($http_cookie !~* "access_token=.*") {
        return 401; # 请求未携带access_token
    }
    allow all;
}

Konfigurasi di atas bermakna jika permintaan tidak membawa medan "access_token", ralat 401 akan dikembalikan jika tidak, semua pengguna akan dibenarkan untuk mengakses.

  1. Berdasarkan kekerapan akses

Dalam sesetengah senario, kami perlu mengehadkan atau membenarkan akses pengguna berdasarkan kekerapan akses pengguna. Sebagai contoh, dalam senario antara muka API, kita boleh mengelakkan serangan DDoS dengan menyemak kekerapan permintaan. Dalam Nginx, kita boleh menggunakan arahan limit_req untuk melaksanakan konfigurasi ACL berdasarkan kekerapan akses. Konfigurasi contoh adalah seperti berikut:

http {
    # 定义限制访问频率的配置
    limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
    # 定义反向代理配置
    server {
        location /api/ {
            limit_req zone=api burst=20 nodelay;
            proxy_pass http://api.example.com/;
        }
    }
}

Konfigurasi di atas menunjukkan bahawa setiap alamat IP boleh mengakses laluan /api/ sehingga 10 kali sesaat dan membenarkan 20 akses pecah. Jika kekerapan akses pengguna melebihi had, ralat 503 akan dikembalikan.

  1. Berdasarkan sumber permintaan

Dalam sesetengah senario, kami perlu menyekat atau membenarkan akses pengguna berdasarkan alamat IP sumber atau nama domain permintaan itu. Contohnya, dalam beberapa senario pengesahan keselamatan, kami boleh melaksanakan kawalan akses dengan menyemak IP sumber permintaan atau nama domain. Dalam Nginx, kita boleh menggunakan arahan geo untuk melaksanakan konfigurasi ACL berdasarkan sumber permintaan. Konfigurasi sampel adalah seperti berikut:

http {
    # 定义IP地址库文件
    geoip_country /usr/share/GeoIP/GeoIP.dat;
    # 定义反向代理配置
    server {
        location / {
            # 根据请求IP的国家代码进行访问控制
            if ($geoip_country_code != CN) {
                deny all;
            }
            proxy_pass http://proxy.example.com/;
        }
    }
}

Konfigurasi di atas bermakna jika negara tempat IP yang diminta terletak bukan China, akses adalah dilarang. Jika anda perlu mengawal akses berdasarkan nama domain, anda boleh menggunakan arahan geoip_host.

Ringkasnya, konfigurasi ACL Nginx adalah sangat fleksibel dan berkuasa, dan boleh melaksanakan kawalan akses berdasarkan tingkah laku pengguna mengikut keperluan yang berbeza. Apabila menggunakan ACL, anda perlu berhati-hati untuk tidak menyalahgunakan pernyataan if, kerana pernyataan if akan menjejaskan prestasi dan kestabilan Nginx. Adalah disyorkan untuk menggunakan arahan terbina dalam Nginx dan pembolehubah sebanyak mungkin untuk melaksanakan konfigurasi ACL. Pada masa yang sama, ujian prestasi dan pengoptimuman juga perlu dijalankan berdasarkan keadaan sebenar untuk memastikan konfigurasi ACL mempunyai kesan yang sedikit terhadap prestasi sistem yang mungkin.

Atas ialah kandungan terperinci Konfigurasi ACL berdasarkan tingkah laku pengguna dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan
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
The Ultimate Showdown: Nginx vs ApacheThe Ultimate Showdown: Nginx vs ApacheApr 18, 2025 am 12:02 AM

Nginx sesuai untuk mengendalikan permintaan serentak yang tinggi, manakala Apache sesuai untuk senario di mana konfigurasi kompleks dan sambungan berfungsi diperlukan. 1.Nginx mengamalkan seni bina yang didorong oleh peristiwa, tidak menyekat, dan sesuai untuk persekitaran yang tinggi. 2. Apache mengamalkan model atau model benang untuk menyediakan ekosistem modul yang kaya yang sesuai untuk keperluan konfigurasi kompleks.

Nginx dalam tindakan: contoh dan aplikasi dunia nyataNginx dalam tindakan: contoh dan aplikasi dunia nyataApr 17, 2025 am 12:18 AM

Nginx boleh digunakan untuk meningkatkan prestasi laman web, keselamatan, dan skalabiliti. 1) Sebagai proksi terbalik dan pengimbang beban, Nginx dapat mengoptimumkan perkhidmatan back-end dan berkongsi lalu lintas. 2) Melalui seni bina yang didorong oleh peristiwa dan tak segerak, Nginx dengan cekap mengendalikan sambungan serentak yang tinggi. 3) Fail konfigurasi membenarkan definisi peraturan yang fleksibel, seperti perkhidmatan fail statik dan mengimbangi beban. 4) Cadangan pengoptimuman termasuk membolehkan pemampatan GZIP, menggunakan cache dan menala proses pekerja.

Unit Nginx: Menyokong bahasa pengaturcaraan yang berbezaUnit Nginx: Menyokong bahasa pengaturcaraan yang berbezaApr 16, 2025 am 12:15 AM

NginxUnit menyokong pelbagai bahasa pengaturcaraan dan dilaksanakan melalui reka bentuk modular. 1. Memuatkan Modul Bahasa: Muatkan modul yang sepadan mengikut fail konfigurasi. 2. Permulaan Permohonan: Jalankan kod aplikasi apabila bahasa panggilan berjalan. 3. Permintaan Pemprosesan: Teruskan permintaan kepada contoh permohonan. 4. Pulangan Respons: Kembalikan respons yang diproses kepada pelanggan.

Memilih antara nginx dan apache: sesuai untuk keperluan andaMemilih antara nginx dan apache: sesuai untuk keperluan andaApr 15, 2025 am 12:04 AM

Nginx dan Apache mempunyai kelebihan dan kekurangan mereka sendiri dan sesuai untuk senario yang berbeza. 1.Nginx sesuai untuk senario penggunaan sumber yang tinggi dan rendah. 2. Apache sesuai untuk senario di mana konfigurasi kompleks dan modul yang kaya diperlukan. Dengan membandingkan ciri teras mereka, perbezaan prestasi, dan amalan terbaik, anda boleh membantu anda memilih perisian pelayan yang paling sesuai dengan keperluan anda.

Cara Memulakan NginxCara Memulakan NginxApr 14, 2025 pm 01:06 PM

Soalan: Bagaimana untuk memulakan nginx? Jawapan: Pasang Nginx Startup Nginx Verification Nginx adalah nginx mula meneroka pilihan permulaan lain secara automatik Mula nginx

Cara memeriksa sama ada nginx dimulakanCara memeriksa sama ada nginx dimulakanApr 14, 2025 pm 01:03 PM

Bagaimana untuk mengesahkan sama ada nginx dimulakan: 1. Gunakan baris arahan: status sistem sistem nginx (linux/unix), netstat -ano | Findstr 80 (Windows); 2. Periksa sama ada port 80 dibuka; 3. Semak mesej permulaan Nginx dalam log sistem; 4. Gunakan alat pihak ketiga, seperti Nagios, Zabbix, dan Icinga.

Cara menutup nginxCara menutup nginxApr 14, 2025 pm 01:00 PM

Untuk menutup perkhidmatan nginx, ikuti langkah -langkah berikut: Tentukan jenis pemasangan: Red Hat/CentOS (status SistemCTL nginx) atau debian/ubuntu (status nginx) menghentikan perkhidmatan: Red Hat/CentOS (SystemCtl Stop Nginx) atau Debian/Ubuntu (perkhidmatan Nginx) (Syst

Cara Mengkonfigurasi Nginx di WindowsCara Mengkonfigurasi Nginx di WindowsApr 14, 2025 pm 12:57 PM

Bagaimana cara mengkonfigurasi nginx di Windows? Pasang Nginx dan buat konfigurasi hos maya. Ubah suai fail konfigurasi utama dan sertakan konfigurasi hos maya. Mulakan atau Muat semula Nginx. Uji konfigurasi dan lihat laman web. Selektif membolehkan SSL dan mengkonfigurasi sijil SSL. Selektif tetapkan firewall untuk membolehkan trafik port 80 dan 443.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

Versi Mac WebStorm

Versi Mac WebStorm

Alat pembangunan JavaScript yang berguna

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)