


Penapisan permintaan HTTP Nginx dan analisis prestasi proksi terbalik
Penapisan permintaan HTTP Nginx dan analisis prestasi proksi terbalik
Nginx ialah pelayan HTTP dan pelayan proksi terbalik yang digunakan secara meluas dalam industri Disebabkan reka bentuknya yang ringkas dan prestasi cemerlang, ia telah menjadi sebilangan besar web aplikasi , pelayan pilihan untuk sistem awan dan aplikasi mudah alih. Dalam aplikasi praktikal, Nginx bukan sahaja bertanggungjawab untuk memproses dan membalas permintaan HTTP, tetapi juga melakukan penapisan permintaan HTTP dan proksi terbalik. Artikel ini akan menganalisis pelaksanaan penapisan permintaan HTTP Nginx dan proksi terbalik, serta melaksanakan ujian dan analisis prestasi.
- Pelaksanaan penapisan permintaan HTTP
Nginx menyediakan modul penapisan permintaan HTTP berdasarkan ungkapan biasa, yang boleh memintas permintaan HTTP yang layak untuk menghalang Penapisan permintaan atau perlindungan yang berniat jahat daripada sumber yang ditentukan. Tambahkan kod berikut pada fail konfigurasi Nginx untuk mendayakan penapisan permintaan HTTP:
http { server { location / { if ($http_user_agent ~* Firefox) { return 403; } ... } } }
Dalam kod di atas, $http_user_agent ialah pembolehubah terbina dalam Nginx, yang mewakili medan User-Agent dalam pengepala permintaan HTTP , dan ~* mewakili ungkapan biasa Jika rentetan Firefox dipadankan, ralat 403 akan dikembalikan. Dengan cara ini, kami boleh menapis satu atau lebih jenis permintaan.
Modul penapisan permintaan HTTP Nginx juga menyediakan jenis pembolehubah dan arahan lain, seperti $http_referer, $request_method, $remote_addr, dll., yang boleh digunakan untuk melaksanakan penapisan kompleks permintaan HTTP yang boleh dilihat oleh Pembaca dokumen Ketahui lebih lanjut.
- Pelaksanaan proksi terbalik
Fungsi proksi terbalik Nginx boleh memajukan proksi permintaan klien ke pelayan aplikasi belakang, dan kemudian pelayan aplikasi belakang mengembalikan Hasilnya. Nginx mengembalikan keputusan kepada pelanggan untuk mencapai pengimbangan beban dan meningkatkan prestasi.
Berikut ialah konfigurasi proksi terbalik yang mudah:
http { upstream myapp { server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; location / { proxy_pass http://myapp; } } }
Dalam konfigurasi di atas, kami mentakrifkan huluan bernama myapp, yang menentukan dua pelayan hujung belakang, mendengar pada 8080 dan Port 8081. Dalam blok pelayan, kami mendengar port 80, mengkonfigurasi lokasi /, dan memajukan permintaan ke myapp melalui arahan proxy_pass, dan proksi myapp memajukannya ke pelayan hujung belakang.
Proksi terbalik Nginx juga menyediakan beberapa strategi lanjutan, seperti algoritma pengimbangan beban, pengendalian ralat, kelekatan sesi, dll. Pembaca boleh merujuk kepada dokumen yang berkaitan untuk mengetahui lebih lanjut.
- Ujian dan analisis prestasi
Melalui analisis di atas, kita dapat melihat bahawa fungsi penapisan permintaan HTTP Nginx dan proksi terbalik sangat berkuasa, tetapi dalam aplikasi sebenar kita masih mempunyai Need untuk memberi perhatian kepada prestasinya. Untuk menguji prestasi Nginx, kami menggunakan alat ApacheBench (ab) untuk menguji dan menjalankan eksperimen pada pelayan Ubuntu 20.04.
Pertama ialah ujian penapisan permintaan HTTP Kami menetapkan medan Ejen Pengguna dalam pengepala permintaan kepada "Mozilla/5.0" dan menghantar 1000 permintaan ke pelayan Nginx:
ab -n 1000 -H "User-Agent: Mozilla/5.0" http://localhost/
Ujian. Keputusan Ia menunjukkan bahawa Nginx boleh mengendalikan 22.33 permintaan sesaat, purata masa bagi setiap permintaan ialah 44.76ms, dan 90% daripada permintaan diselesaikan dalam masa 54ms:
Concurrency Level: 1 Time taken for tests: 44.780 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 159000 bytes HTML transferred: 0 bytes Requests per second: 22.33 [#/sec] (mean) Time per request: 44.780 [ms] (mean) Time per request: 44.780 [ms] (mean, across all concurrent requests) Transfer rate: 3.47 [Kbytes/sec] received
Seterusnya ialah ujian proksi terbalik, kami menggunakan Pelayan bahagian belakang yang ringkas digunakan untuk mensimulasikan aplikasi sebenar Setiap masa pemprosesan permintaan ialah 10ms, dan permintaan dimulakan ke dua pelayan bahagian belakang pada masa yang sama:
http { upstream myapp { server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; location / { proxy_pass http://myapp; } } }
ab -n 1000 http://localhost/
Keputusan ujian menunjukkan bahawa Nginx boleh mengendalikan 966.41 permintaan sesaat. , dan setiap Purata masa untuk permintaan ialah 1.03ms, dan 90% daripada permintaan diselesaikan dalam masa 2ms:
Concurrency Level: 1 Time taken for tests: 1.034 seconds Complete requests: 1000 Failed requests: 0 Total transferred: 154000 bytes HTML transferred: 0 bytes Requests per second: 966.41 [#/sec] (mean) Time per request: 1.034 [ms] (mean) Time per request: 1.034 [ms] (mean, across all concurrent requests) Transfer rate: 145.42 [Kbytes/sec] received
Daripada keputusan ujian, kita dapat melihat bahawa Nginx mempunyai keupayaan pemintasan dan pemajuan yang sangat kuat untuk HTTP permintaan dan boleh mengendalikan sejumlah besar permintaan dan mengekalkan prestasi tinggi. Walau bagaimanapun, prestasi Nginx juga dihadkan oleh faktor seperti keupayaan perkakasan pelayan, parameter sistem pengendalian, dan konfigurasi Nginx Pembaca perlu menyesuaikan dan mengoptimumkan mengikut keadaan sebenar dalam aplikasi sebenar.
Kesimpulan
Artikel ini menganalisis penapisan permintaan HTTP Nginx dan fungsi proksi terbalik, memperkenalkan pelaksanaan dan prestasinya serta menjalankan ujian dan analisis mudah. Sebagai pelayan HTTP yang biasa digunakan dan pelayan proksi terbalik, Nginx memberikan kami keupayaan perkhidmatan Web yang berkuasa Pembaca boleh memilih dan mengkonfigurasi modul dan parameter Nginx yang berbeza mengikut keperluan dan persekitaran sebenar untuk mencapai prestasi dan kesan terbaik.
Atas ialah kandungan terperinci Penapisan permintaan HTTP Nginx dan analisis prestasi proksi terbalik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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.

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.

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.

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

Pelayan tidak mempunyai kebenaran untuk mengakses sumber yang diminta, mengakibatkan ralat NGINX 403. Penyelesaian termasuk: Periksa keizinan fail. Semak konfigurasi .htaccess. Semak konfigurasi Nginx. Konfigurasikan keizinan Selinux. Semak peraturan firewall. Menyelesaikan masalah lain seperti masalah penyemak imbas, kegagalan pelayan, atau kesilapan lain yang mungkin.

Jawab kepada Soalan: 304 Tidak diubahsuai ralat menunjukkan bahawa penyemak imbas telah cache versi sumber terkini permintaan klien. Penyelesaian: 1. Kosongkan cache penyemak imbas; 2. Lumpuhkan cache penyemak imbas; 3. Konfigurasi nginx untuk membolehkan cache pelanggan; 4. Periksa keizinan fail; 5. Semak fail hash; 6. Lumpuhkan CDN atau cache proksi terbalik; 7. Mulakan semula nginx.

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.
