![Google renunță oficial la Picasa pentru Linux](/f/c68f6c7231d61c4c9db5e169d8d4abe2.png?width=100&height=100)
Conform celor mai recente sondaj pe serverul web realizat de Netcraft, care a fost realizat spre sfârșitul anului 2017, (tocmai în noiembrie), Apache și Nginx sunt cele mai utilizate servere web open source pe internet.
Apache este un server HTTP gratuit, open-source pentru sisteme de operare de tip Unix și Windows. A fost conceput pentru a fi un server sigur, eficient și extensibil, care oferă servicii HTTP sincronizate cu standardele HTTP predominante.
De când este lansat, Apache a fost cel mai popular server web de pe Internet din 1996. Este standardul de facto pentru serverele Web din Linux și ecosistemul open source. Utilizatorii noi de Linux găsesc în mod normal mai ușor de configurat și de utilizat.
Nginx (pronunțat „Motor-x') Este un server HTTP gratuit, open-source, performant, proxy invers și un server proxy IMAP / POP3. La fel ca Apache, rulează și pe sisteme de operare de tip Unix și Windows.
Cunoscut pentru performanța ridicată, stabilitatea, configurația simplă și consumul redus de resurse, de-a lungul anilor a devenit atât de popular și utilizarea sa pe Internet se îndreaptă spre înălțimi mai mari. Acum este serverul web la alegere dintre administratorii de sistem experimentați sau maeștrii web ai site-urilor de top.
Unele dintre site-urile ocupate alimentate de:
Există numeroase resurse deja publicate pe web referitoare la comparația dintre Apache și Nginx (chiar vreau să spun „Apache Vs NginxArticole), dintre care multe explică în mod clar în detaliu, caracteristicile și operațiunile lor de vârf în diferite scenarii, inclusiv măsuri de performanță în repere de laborator. Prin urmare, acest lucru nu va fi abordat aici.
Voi împărtăși pur și simplu experiența și gândurile mele despre întreaga dezbatere, după ce am încercat Apache și Nginx, atât în mediile de producție bazate pe cerințele de găzduire a aplicațiilor web moderne, în secțiunea următoare.
Următoarele sunt motivele pentru care prefer serverul web Nginx decât Apache pentru livrarea de conținut web modern:
Nginx este unul dintre serverele web ușoare de acolo. Are amprente mici pe un sistem comparativ cu Apache, care implementează o gamă largă de funcționalități necesare pentru a rula o aplicație.
Deoarece Nginx reunește o mână de funcții de bază, se bazează pe servere web dedicate de la terțe părți, cum ar fi un Apache backend, FastCGI, Memcached, SCGI și servere uWSGI sau server de aplicații, adică servere specifice limbii, cum ar fi Node.js, Tomcat, etc.
Prin urmare, utilizarea memoriei sale este mult mai potrivită pentru implementări limitate de resurse decât Apache.
Spre deosebire de arhitectura cu filet sau orientată spre proces a lui Apache (modelul proces-pe-conexiune sau modelul fir-per-conexiune), Nginx folosește o arhitectură scalabilă, bazată pe evenimente (asincronă). Folosește un model de proces responsabil, adaptat resurselor hardware disponibile.
Are un proces master (care efectuează operațiuni privilegiate, cum ar fi citirea configurației și legarea la porturi) și care creează mai multe procese de lucru și asistent.
Procesele lucrătoare pot gestiona fiecare mii de conexiuni HTTP simultan, pot citi și scrie conținut pe disc și pot comunica cu servere din amonte. Procesele de asistență (manager cache și încărcător cache) pot gestiona operațiunile de stocare în cache a conținutului pe disc.
Acest lucru face operațiunile sale scalabile și rezultă în performanțe ridicate. Această abordare de proiectare îl face rapid, favorabil pentru aplicațiile moderne. În plus, modulele terță parte pot fi utilizate pentru a extinde funcționalitățile native din Nginx.
Nginx are o structură simplă de fișiere de configurare, făcându-l foarte ușor de configurat. Se compune din module care sunt controlate de directive specificate în fișierul de configurare. În plus, directivele sunt împărțite în directive bloc și directive simple.
O directivă de bloc este definită de acolade ({
și }
). Dacă o directivă de bloc poate avea alte directive în interiorul parantezelor, se numește context, cum ar fi evenimente, http, server și locație.
http {server {} }
O directivă simplă constă din numele și parametrii separați prin spații și se termină cu punct și virgulă (;)
.
http {server {location / {## aceasta este directivă simplă numită root root /var/www/hmtl/example.com/; } } }
Puteți include fișiere de configurare personalizate utilizând directiva include, de exemplu.
http {server {} ## exemple de includere a fișierelor de configurare suplimentare includ /path/to/config/file/*.conf; include /path/to/config/file/ssl.conf; }
Un exemplu practic pentru mine a fost modul în care am reușit să configurez cu ușurință Nginx rulați mai multe site-uri web cu versiuni PHP diferite, ceea ce a fost puțin o provocare cu Apache.
Una dintre utilizările comune ale Nginx îl configurează ca server proxy, în acest caz primește solicitări HTTP de la clienți și le transmite serverelor proxy sau upstream menționate mai sus, prin diferite protocoale. De asemenea, puteți modifica anteturile solicitării clientului care sunt trimise către serverul proxy și puteți configura tamponarea răspunsurilor provenite de la serverele proxy.
Apoi primește răspunsuri de la serverele proxy și le transmite clienților. Este mult mai ușor de configurat ca server proxy în comparație cu Apache, deoarece modulele necesare sunt, în majoritatea cazurilor, activate în mod implicit.
Conținutul static sau fișierele sunt de obicei fișiere stocate pe disc pe computerul server, de exemplu fișiere CSS, fișiere JavaScript sau imagini. Să luăm în considerare un scenariu în care utilizați Nginx ca frontend pentru Nodejs (serverul de aplicații).
Deși serverul Nodejs (în special cadrele Node) are funcții integrate pentru manipularea statică a fișierelor, nu este nevoie să facă unele procesarea pentru a livra conținut nedinamic, prin urmare este practic util să configurați serverul web pentru a servi direct conținut static clienți.
Nginx poate efectua o treabă mult mai bună de gestionare a fișierelor statice dintr-un anumit director și poate împiedica solicitările de active statice să sufoce procesele serverului din amonte. Acest lucru îmbunătățește semnificativ performanța generală a serverelor backend.
Pentru a obține performanțe ridicate și timp de funcționare pentru aplicațiile web moderne, puteți apela la rularea mai multor instanțe de aplicație pe un singur server HTTP sau distribuit. La rândul său, acest lucru poate necesita configurarea echilibrării încărcării pentru a distribui încărcarea între serverele dvs. HTTP.
Astăzi, echilibrarea încărcării a devenit o abordare larg utilizată pentru optimizarea utilizării resurselor sistemului de operare, maximizarea flexibilității, tăierea reducerea latenței, creșterea debitului, obținerea redundanței și stabilirea configurațiilor tolerante la erori - în mai multe aplicații instanțe.
Nginx utilizează următoarele metode de echilibrare a sarcinii:
În plus, Nginx este extrem de scalabil și aplicații web moderne, în special cereri de aplicații de întreprindere pentru tehnologie care oferă performanțe și scalabilitate ridicate.
O companie care beneficiază de caracteristicile uimitoare de scalabilitate ale Nginx este CloudFlare, a reușit să își scaleze aplicațiile web pentru a gestiona peste 15 miliarde de pagini lunare vizualizate cu o infrastructură relativ modestă, potrivit Matthew Prince, cofondator și CEO al CloudFare.
Pentru o explicație mai cuprinzătoare, consultați acest articol pe blogul Nginx: NGINX vs. Apache: Viziunea noastră asupra unei întrebări vechi de decenii.
Ambii Apache și Nginx nu pot fi înlocuiți unul de celălalt, au punctele lor puternice și slabe. In orice caz, Nginx oferă o tehnologie puternică, flexibilă, scalabilă și sigură pentru alimentarea fiabilă și eficientă a site-urilor web și a aplicațiilor web moderne. Care este ideea ta? Spuneți-ne prin formularul de feedback de mai jos.