Rumah Operasi dan penyelenggaraan Nginx Konfigurasi 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
nginx proksi terbalik konfigurasi 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; # 禁止所有访问
}
Salin selepas log masuk

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地址访问
Salin selepas log masuk

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;
}
Salin selepas log masuk

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;
}
Salin selepas log masuk

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/;
        }
    }
}
Salin selepas log masuk

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/;
        }
    }
}
Salin selepas log masuk

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

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.

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara mengkonfigurasi nama domain pelayan awan di nginx Cara mengkonfigurasi nama domain pelayan awan di nginx Apr 14, 2025 pm 12:18 PM

Cara mengkonfigurasi nama domain Nginx pada pelayan awan: Buat rekod yang menunjuk ke alamat IP awam pelayan awan. Tambah blok hos maya dalam fail konfigurasi Nginx, menyatakan port pendengaran, nama domain, dan direktori akar laman web. Mulakan semula nginx untuk memohon perubahan. Akses konfigurasi ujian nama domain. Nota Lain: Pasang sijil SSL untuk membolehkan HTTPS, pastikan firewall membenarkan trafik port 80, dan tunggu resolusi DNS berkuatkuasa.

Cara memeriksa sama ada nginx dimulakan Cara memeriksa sama ada nginx dimulakan Apr 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 membuat cermin di Docker Cara membuat cermin di Docker Apr 15, 2025 am 11:27 AM

Langkah -langkah untuk membuat imej Docker: Tulis Dockerfile yang mengandungi arahan membina. Bina imej di terminal, menggunakan arahan membina Docker. Tag imej dan tetapkan nama dan tag menggunakan arahan tag docker.

Cara memeriksa versi nginx Cara memeriksa versi nginx Apr 14, 2025 am 11:57 AM

Kaedah yang boleh menanyakan versi nginx adalah: gunakan perintah nginx -v; Lihat arahan versi dalam fail nginx.conf; Buka halaman ralat Nginx dan lihat tajuk halaman.

Cara memulakan pelayan nginx Cara memulakan pelayan nginx Apr 14, 2025 pm 12:27 PM

Memulakan pelayan Nginx memerlukan langkah-langkah yang berbeza mengikut sistem operasi yang berbeza: Sistem Linux/Unix: Pasang pakej Nginx (contohnya, menggunakan apt-get atau yum). Gunakan SystemCTL untuk memulakan perkhidmatan Nginx (contohnya, SUDO SystemCTL Mula Nginx). Sistem Windows: Muat turun dan pasang fail binari Windows. Mula Nginx menggunakan nginx.exe executable (contohnya, nginx.exe -c conf \ nginx.conf). Tidak kira sistem operasi yang anda gunakan, anda boleh mengakses IP pelayan

Bagaimana untuk memeriksa sama ada Nginx dimulakan? Bagaimana untuk memeriksa sama ada Nginx dimulakan? Apr 14, 2025 pm 12:48 PM

Di Linux, gunakan arahan berikut untuk memeriksa sama ada nginx dimulakan: Hakim status SistemCTL Nginx berdasarkan output arahan: Jika "Aktif: Aktif (Running)" dipaparkan, Nginx dimulakan. Jika "aktif: tidak aktif (mati)" dipaparkan, nginx dihentikan.

Cara memulakan nginx di linux Cara memulakan nginx di linux Apr 14, 2025 pm 12:51 PM

Langkah -langkah untuk memulakan Nginx di Linux: Periksa sama ada Nginx dipasang. Gunakan SistemCTL Mula Nginx untuk memulakan perkhidmatan Nginx. Gunakan SistemCTL Dayakan NGINX untuk membolehkan permulaan automatik Nginx pada permulaan sistem. Gunakan Status SistemCTL Nginx untuk mengesahkan bahawa permulaan berjaya. Lawati http: // localhost dalam pelayar web untuk melihat halaman selamat datang lalai.

Cara menyelesaikan nginx403 Cara menyelesaikan nginx403 Apr 14, 2025 am 10:33 AM

Bagaimana untuk memperbaiki kesilapan dilarang nginx 403? Semak keizinan fail atau direktori; 2. Semak .htaccess File; 3. Semak fail konfigurasi nginx; 4. Mulakan semula nginx. Penyebab lain yang mungkin termasuk peraturan firewall, tetapan selinux, atau isu aplikasi.

See all articles