Enjin mana yang lebih baik, Apache HTTP atau Nginx?
Perisian tengah HTTP
Apabila kami memasukkan pautan web dalam penyemak imbas, penyemak imbas menghantar permintaan kepada pelayan yang sepadan berdasarkan protokol penghantaran HTTP(s)
dan pelayan memproses permintaan yang sepadan selepas menerimanya. Kembalikan maklumat yang sepadan kepada penyemak imbas, dan kemudian penyemak imbas menghuraikan kandungan dalam http
dan memaparkannya dalam bentuk halaman web.
Pelayan bertanggungjawab untuk menerima permintaan dan mengembalikan data yang sepadan selepas pemprosesan, yang boleh dibahagikan kepada bahagian perkhidmatan yang memproses sambungan http
dan bahagian aplikasi yang melaksanakan kandungan perkhidmatan (WordPress
menggunakan PHP
Menjana halaman yang diperlukan adalah kepunyaan bahagian aplikasi)
Tidak kira apa jenis aplikasi yang dijalankan oleh bahagian aplikasi, bahagian yang mengendalikan sambungan http
adalah hampir sama, jadi terdapat bahagian tengah yang secara khusus mengendalikan sambungan http
, pada masa ini yang paling biasa ialah Apache
dan Nginx
.
Apache
, yang nama rasminya ialah "Apache HTTP Server
", ialah perisian tengah pelayan sumber terbuka HTTP
Ia dilahirkan pada tahun 1995 dan pernah menjadi peneraju dalam perkhidmatan HTTP
Ia mempunyai sejumlah besar pengguna dan sumber komuniti yang kaya. Salah satu kelebihan hebat Apache
ialah ia mudah untuk disepadukan dengan perisian CMS seperti Wordpress
Anda boleh membina tapak web berasaskan CMS dengan hanya tetapan mudah.
Model pemprosesan dalaman Apache
Dari segi struktur dalaman, Apache
mengamalkan pendekatan pelbagai proses Setiap kali terdapat sambungan, satu proses akan dibuka untuk sambungan ini, khusus untuk memproses permintaan sambungan ini sehingga sambungan tamat. Kelebihan ini ialah:
Sambungan daripada pelanggan yang berbeza akan dibalas serta-merta tanpa mengganggu satu sama lain, dan sambungan lain tidak akan terjejas kerana satu perkhidmatan mengambil masa yang lama.
Tetapi kelemahannya juga jelas:
Apabila terdapat banyak akses serentak,
Apache
akan mencipta sejumlah besar proses, menduduki terlalu banyak masa.Penjadualan antara sejumlah besar benang juga akan menyebabkan banyak pembaziran kuasa pemprosesan CPU.
Ini menimbulkan masalah yang dipanggil C10K
, C ialah pelanggan, 10K bermakna 10,000, iaitu, tidak kira betapa tinggi prestasi dan lebar jalur rangkaian pelayan , Apache
semuanya sukar untuk mengendalikan lebih daripada 10,000 sambungan pada masa yang sama.
Nginx
disebut sebagai Engine-X
Seperti Apache
, ia juga merupakan perisian tengah sumber terbuka untuk perkhidmatan HTTP
Ia dilahirkan pada tahun 2004. Nginx
mempunyai sejarah yang lebih pendek daripada Apache
, tetapi kerana ia lambat datang, Nginx
mempelajari pelajaran Apache
dan mempertimbangkan kecekapan mengendalikan sejumlah besar sambungan pada peringkat reka bentuk awal, menyelesaikan masalah seperti C10K
dan masalah lain yang timbul apabila skala Internet berkembang.
Model pemprosesan dalaman Nginx
Nginx
mengamalkan 非阻塞IO
dan pendekatan dipacu mesej tak segerak, iaitu, menggunakan gelung dalam urutan yang dipanggil worker
untuk memproses sambungan dalam baris gilir bertanya. Bergantung pada perkakasan, berbilang worker
benang boleh ditetapkan untuk menggunakan sepenuhnya sumber teras CPU
.
Selesaikan masalah penggunaan memori yang berlebihan dan kecekapan penjadualan yang rendah apabila memproses sejumlah besar sambungan, sambil juga menggunakan sepenuhnya semua teras CPU. Keupayaan untuk mengendalikan sambungan serentak adalah 10 hingga 100 kali ganda daripada
Apache
pada perkakasan yang sama.
Tetapi Nginx
kaedah ini bukan tanpa kekurangannya.
Apabila prestasi teras tunggal pelayan adalah lemah, tapak web dinamik berdasarkan CMS mungkin mengambil masa yang lama untuk melaksanakan permintaan Pada masa ini, permintaan daripada pelanggan lain tidak akan segera dilaksanakan. Ia akan menjadi lebih jelas apabila
CPU
terdapat lebih sedikit teras danworker
benang tidak mencukupi.
Nasib baik, prestasi pelayan semakin kukuh dan kukuh Di bawah pimpinan AMD
, bilangan CPU
teras juga semakin bertambah cukup untuk menebusnya Dan kelebihan kecekapan tinggi semakin ketara. Nginx
Kuasa pemprosesan adalah 10-100 kali terhad Adakah ia akan disekat oleh tugas yang kompleks. Adakah mungkin untuk menetapkan tahap kesukaran menjadi agak mudah dan agak kompleks ? Komuniti mempunyai sumber yang agak sedikitApache Nginx
telah terus meningkat, dan pada tahun 2019 ia telah mencapai tahap yang sama seperti Nginx
. Untuk tapak web yang besar dengan bilangan lawatan yang banyak, anda dapat melihat bahawa semakin banyak bilangan lawatan, semakin tinggi nisbah Apache
. Ini juga mengesahkan prestasi unggul Nginx
apabila mengendalikan sejumlah besar akses. Nginx
Selain digunakan sebagai pelayan HTTP, fungsi proksi terbaliknya yang berkuasa juga digunakan secara meluas sebagai pelayan pengimbangan beban hadapan, secara beransur-ansur menggantikan berasaskan perkakasan peranti pengimbangan beban. Nginx
Nginx
akan memajukan permintaan ke pelayan bahagian belakang mengikut peraturan tertentu (polling, pencincangan IP, rawak keutamaan) selepas menerima meminta pelayan akhir untuk mencapai pengagihan beban purata atau wajaran pada berbilang pelayan. Nginx
Pada masa yang sama, sebagai pengimbangan beban bahagian hadapan, ia juga boleh cache data yang dikembalikan oleh bahagian belakang untuk melegakan tekanan pada pelayan bahagian belakang. Bahagian hadapan menggunakan Nginx
untuk pengimbangan beban untuk mengehadkan bilangan sambungan ke setiap pelayan, dan ia adalah perkara biasa bagi pelayan bahagian belakang menjalankan Apache
.
Pemimpin industri pengimbang beban perkakasanF5 networks
memperoleh Nginx
pada 2019 dan melancarkan penyelesaian pengimbangan beban Nginx+
yang termasuk perkhidmatan berbayar.
Atas ialah kandungan terperinci Enjin mana yang lebih baik, Apache HTTP atau Nginx?. 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



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.

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.

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.

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.

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

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.

Untuk menetapkan alamat akses ke IP pelayan di nginx, konfigurasikan blok pelayan, tetapkan alamat pendengaran (seperti mendengar 192.168.1.10:80) tetapkan nama pelayan (seperti server_name example.com www.example.com), atau biarkan kosong untuk mengakses IP pelayan dan muat semula nginx untuk menggunakan perubahan tersebut
