Kontaktirajte nas

info@serverion.com

Nazovite nas

+1 (302) 380 3902

Ovladavanje Nginx konfiguracijama za optimalnu izvedbu web poslužitelja

Ovladavanje Nginx konfiguracijama za optimalnu izvedbu web poslužitelja

Želite brže i bolje web stranice performanse poslužitelja? Nginx može pomoći. Sa svojim dizajnom vođenim događajima, Nginx učinkovito obrađuje tisuće veza, što ga čini najboljim izborom za web stranice s velikim prometom i aplikacije u stvarnom vremenu. Ali da biste otključali njegov puni potencijal, ključna je pravilna konfiguracija.

Ključni zaključci:

  • Poboljšajte izvedbu: Prilagodite radne procese i omogućite kompresiju kako biste smanjili korištenje resursa i ubrzali odgovore.
  • Upravljanje prometom: Upotrijebite balansiranje opterećenja za distribuciju prometa preko poslužitelja i optimizaciju za velika opterećenja.
  • Sigurne veze: Konfigurirajte SSL terminaciju za poboljšanu sigurnost bez preopterećenja pozadinskih poslužitelja.
  • Aplikacije u stvarnom vremenu: Postavite podršku za WebSocket za besprijekornu komunikaciju na platformama u stvarnom vremenu.
  • Učinkovito nadzirite: Koristite alate kao što su Prometheus i Grafana za praćenje stanja i performansi poslužitelja.

Primjeri brzog postavljanja:

  • Radnički procesi: Podudaranje s CPU jezgrama (radnički_procesi 4;).
  • Kompresija: Omogući Gzip (gzip uključen; gzip_comp_level 6;).
  • Spremanje u predmemoriju: Konfigurirajte proxy predmemoriju za brzinu (proxy_cache_path /var/cache/nginx;).
  • Balansiranje opterećenja: Distribuirajte promet kružno ili s najmanje veza.

Stručni savjet: Redovito nadzirite i fino podešavajte svoje postavke kako bi vaš poslužitelj radio glatko. Bez obzira upravljate li web-mjestima s velikim prometom, statičnim sadržajem ili aplikacijama u stvarnom vremenu, ove konfiguracije mogu napraviti veliku razliku.

Podešavanje performansi NGINX Open Source i NGINX Plus

Nginx

Ključne Nginx konfiguracijske datoteke i postavke

Izvlačenje maksimuma iz vašeg Nginx poslužitelja počinje s razumijevanjem njegovih konfiguracijskih datoteka i finim podešavanjem ključnih postavki. Ovdje je pregled onoga što trebate znati.

Razumijevanje Nginx konfiguracijskih datoteka

Nginx postavke organizirane su u dva glavna područja:

  • Globalne postavke: Pronađeno u /etc/nginx/nginx.conf
  • Postavke specifične za web mjesto: Nalazi se u /etc/nginx/sites-available/

Prije primjene promjena, testirajte svoju konfiguraciju pomoću nginx -t kako biste bili sigurni da nema grešaka.

Podešavanje radnih procesa i veza

Radnički procesi i veze igraju veliku ulogu u tome koliko dobro vaš poslužitelj radi. Evo kratkog vodiča za njihovo postavljanje:

Postavka Opis Primjer vrijednosti
radnički_procesi Broj radnih procesa Odgovara CPU jezgrama
radničke_veze Maksimalni broj veza po radniku 1024. – 2048.
keepalive_timeout Istek vremena veze 65 sekundi

Savjet: Prilagodite ove vrijednosti na temelju hardvera vašeg poslužitelja.

Na primjer, ako vaš poslužitelj ima 4 CPU jezgre, vaša konfiguracija može izgledati ovako:

radnički_procesi 4; događaji { radničke_veze 1024; } 

Nakon optimizacije radnih procesa, možete dodatno poboljšati performanse omogućavanjem kompresije i predmemoriranja.

Korištenje Gzip kompresije i predmemoriranja

Kompresija i predmemorija pomažu smanjiti propusnost i poboljšati vrijeme učitavanja. Evo kako ih konfigurirati:

Omogući Gzip kompresiju:

gzip uključen; gzip_comp_level 6; gzip_types tekst/običan tekst/css aplikacija/json aplikacija/javascript; 

Postavite predmemoriju:

proxy_cache_path /var/cache/nginx razine=1:2 keys_zone=jedan:10m neaktivan=60m; proxy_cache jedan; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; 

The proxy_cache_path direktiva stvara zonu predmemorije za često pristupani sadržaj, što smanjuje opterećenje vaše pozadine. Također možete koristiti predmemorija_otvorene_datoteke za pohranjivanje često pristupanih datoteka u memoriju, smanjujući korištenje diska.

Napredne tehnike za uravnoteženje opterećenja i SSL

Nadovezujući se na optimizaciju radnog procesa i predmemoriju, ove tehnike usmjerene su na poboljšanje distribucije prometa i sigurnosti.

Postavljanje balansiranja opterećenja

Nginx nudi moćne alate za širenje dolaznog prometa na više poslužitelja. Evo osnovne konfiguracije:

uzvodni backend { # Zadano: kružni rad za uravnoteženu distribuciju poslužitelja localhost:8080; poslužitelj localhost:8081; poslužitelj localhost:8082; # Ukloni komentar za najmanje veza (bolje za neravnomjerna opterećenja) # least_conn; } poslužitelj { listen 80; lokacija / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 
  • Round-robin idealan je za poslužitelje sa sličnim vremenom odziva.
  • Najmanje veza radi bolje kada zahtjevi variraju u složenosti, pomažući u izbjegavanju preopterećenja sporijih poslužitelja.
  • Za postojanost sesije, omogućite IP hash dosljedno usmjeravati korisnike na isti poslužitelj.

Konfiguriranje SSL prekida

Prekid SSL-a prebacuje zadatke enkripcije na Nginx, smanjujući radno opterećenje na pozadinskim poslužiteljima. Istraživanje Bobcaresa sugerira da ovo može smanjiti latenciju SSL rukovanja do 50%.

Evo kako kombinirati SSL završetak s uravnoteženjem opterećenja:

http { uzvodni backend { poslužitelj localhost:8080; poslužitelj localhost:8081; } poslužitelj { slušati 443 ssl; naziv_poslužitelja example.com; ssl_certificate /put/do/certifikata.crt; ssl_certificate_key /put/do/privatnog/ključa.ključ; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers uključen; ssl_session_cache dijeljeno:SSL:10m; lokacija / { proxy_pass http://backend; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } } 

Važni savjeti za SSL:

  • Držite se TLS 1.2 i 1.3 za bolju sigurnost.
  • Dajte prioritet šiframa na strani poslužitelja za jaču enkripciju.
  • Omogućite predmemoriju sesije za poboljšanje performansi.

Prilagodba Nginxa za specifične potrebe

Optimiziranje Nginxa za web stranice s velikim prometom

Za web stranice s velikim prometom, konfiguracija Nginxa mora biti fino podešena kako bi se učinkovito nosila s velikim opterećenjima. Podešavanje ključnih parametara može značajno poboljšati odziv poslužitelja i ukupne performanse.

Podešavanje veličine međuspremnika

http { client_body_buffer_size 16k; client_header_buffer_size 4k; client_max_body_size 8m; large_client_header_buffers 4 8k; } 

Ove postavke daju prednost upotrebi memorije u odnosu na I/O diska, ubrzavajući obradu zahtjeva. Na primjer, povećanje veličina_spremnika_tijela_klijenta smanjuje potrebu za privremenim pisanjem datoteka tijekom zahtjeva.

Učinkovito upravljanje zapisima

http { access_log /var/log/nginx/access.log kombinirani međuspremnik=32k flush=5s; error_log /var/log/nginx/error.log upozorenje; } 

Korištenje međuspremnika od 32 KB i intervala ispiranja od 5 sekundi minimizira operacije diska dok zapise održava točnim i ažurnim.

Postavke vremenskog ograničenja

http { client_body_timeout 12; client_header_timeout 12; send_timeout 10; } 

Ove vrijednosti vremenskog ograničenja pomažu spriječiti spore klijente da nepotrebno troše resurse poslužitelja.

Nakon što su te prilagodbe postavljene, Nginx se također može prilagoditi za aplikacije koje zahtijevaju kontinuiranu komunikaciju, kao što su WebSockets.

Konfiguriranje Nginx-a za WebSocket podršku

WebSockets su kritična komponenta aplikacija u stvarnom vremenu. Ispravno postavljanje Nginx-a za rukovanje WebSocket vezama osigurava glatku izvedbu čak i pod opterećenjem.

mapa $http_upgrade $connection_upgrade { zadana nadogradnja; '' zatvori; } poslužitelj { listen 80; naziv_servera example.com; lokacija /websocket { proxy_pass http://backend_server; proxy_http_version 1.1; proxy_set_header Nadogradnja $http_upgrade; proxy_set_header Veza $connection_upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; # Postavke vremenskog ograničenja za WebSocket veze proxy_read_timeout 300s; proxy_send_timeout 300s; } } 

Ključni detalji konfiguracije WebSocketa:

Direktiva Svrha
proxy_http_verzija Omogućuje HTTP/1.1 podršku za WebSocket
proxy_read_timeout Postavlja maksimalno vrijeme između paketa podataka
proxy_send_timeout Definira maksimalno vrijeme za slanje podataka
proxy_cache_bypass Onemogućuje predmemoriju za WebSocket promet

The karta direktiva učinkovito upravlja nadogradnjom veze, osiguravajući glatku WebSocket komunikaciju.

Kako bi se spriječila zloupotreba, ograničenje brzine može se primijeniti na WebSocket veze:

http { limit_req_zone $binary_remote_addr zone=websocket_limit:10m brzina=5r/s; lokacija /websocket { limit_req zone=websocket_limit burst=20 nodelay; # ... ostatak konfiguracije WebSocketa } } 

Ova postavka ograničava IP-ove na 5 zahtjeva u sekundi s nizom od 20 zahtjeva, štiteći od DoS napada uz održavanje dostupnosti usluge.

Najbolji primjeri iz prakse za izvedbu i nadzor Nginxa

Osim početnog postavljanja, održavanje konfiguracije Nginxa optimiziranom osigurava da se može učinkovito nositi s promjenjivim radnim opterećenjima.

Ključna područja na koja se treba usredotočiti

Poboljšanje performansi Nginxa uključuje fino podešavanje specifičnih postavki koje izravno utječu na to koliko učinkovito vaš poslužitelj radi.

Upravljanje radničkim procesima

The worker_rlimit_nofile direktiva ključna je za upravljanje deskriptorima datoteka. Osigurava da vaš poslužitelj može podnijeti višestruke istodobne veze bez dostizanja ograničenja tijekom razdoblja velikog prometa:

worker_rlimit_nofile 65535; 

Korištenje Open File Cache

Otvorena predmemorija datoteke minimizira disk I/O pohranjivanjem metapodataka za datoteke kojima se često pristupa, što ubrzava isporuku statičkog sadržaja:

http { open_file_cache max=1000 neaktivno=20s; open_file_cache_valid 30s; open_file_cache_min_uses 2; open_file_cache_errors uključeno; } 

Nakon što se te optimizacije uspostave, redovito praćenje postaje neophodno kako bi se osigurala kontinuirana izvedba i uočila područja koja trebaju daljnje prilagodbe.

Praćenje Nginx performansi

Praćenje pomaže u praćenju rada vašeg poslužitelja i otkriva sva uska grla ili neučinkovitosti. Ključne metrike koje treba promatrati uključuju stope zahtjeva, stope pogrešaka i korištenje resursa. Alati kao što su Prometheus i Grafana olakšavaju prikupljanje i vizualizaciju ovih podataka.

Preporučeno Alati za praćenje

Alat Svrha Ključne metrike
Prometej Prikuplja podatke o izvedbi uživo Stope zahtjeva, vremena odgovora, stope pogrešaka
Grafana Vizualizira trendove izvedbe Upotreba CPU-a, potrošnja memorije, obrasci prometa
htop Prati korištenje resursa sustava Korištenje procesa, dodjela memorije

Postavljanje metrike izvedbe

Omogućite praćenje statusa u Nginxu tako da konfigurirate sljedeće:

lokacija /nginx_status { stub_status uključen; access_log isključen; dopusti 127.0.0.1; zabrani sve; } 

Ova postavka pruža uvid u:

  • Aktivne veze
  • Ukupno prihvaćenih veza
  • Statistika obrade zahtjeva
  • Veze za čitanje, pisanje i čekanje

Učinkovito analiziranje zapisa

Zapisivanje u međuspremnik može smanjiti opterećenje diska grupiranjem pisanja dnevnika. Ovo pomaže u održavanju performansi poslužitelja bez žrtvovanja točnosti vaših zapisa.

"Redovito praćenje i prilagodba temeljena na podacima o performansama ključni su za postizanje optimalnih rezultata. Bitno je izbjegavati unošenje previše promjena odjednom jer to može zakomplicirati rješavanje problema."

Mogućnosti hostinga za Nginx

Odabir pravog okruženja za hosting jednako je važan kao i fino podešavanje Nginx konfiguracije. Prava platforma osigurava da vaše optimizacije daju najbolje rezultate.

Značajke od Serverion Usluge poslužitelja

Serverion

Serverion nudi hosting platformu dizajniranu posebno za Nginx, pružajući iznimne performanse i pouzdanost.

Pohrana i izvedba
Serverion koristi SSD pohranu optimiziranu za Nginx, smanjujući I/O latenciju kako bi se ubrzao pristup konfiguracijskim datotekama i zapisnicima.

Sigurnosna infrastruktura
S DDoS zaštitom na razini poduzeća, Serverion poboljšava sigurnost Nginxa. Ovo osigurava vrijeme rada tijekom napada i nadopunjuje Nginxove značajke balansiranja opterećenja.

Vrsta izvora Tehnički podaci Prednosti za Nginx
CPU Xeon s četiri jezgre Učinkovito upravlja radničkim procesima
OVAN Do 16 GB Povećava performanse predmemoriranja
skladištenje Temeljen na SSD-u Ubrzava pristup datotekama
Širina pojasa Visokog kapaciteta Podržava pouzdano balansiranje opterećenja

Skalabilna infrastruktura
Serverionovi planovi osmišljeni su kako bi se prilagodili vašim rastućim prometnim potrebama. Ovo osigurava da vaše Nginx postavke mogu podnijeti povećanu potražnju bez gubitka performansi.

"Redovito nadziranje i optimizacija performansi bitni su kada hostirate Nginx. Pravo hosting okruženje trebalo bi pružiti i resurse i alate potrebne za održavanje optimalne performanse poslužitelja."

Stručna podrška
Serverionov tim za podršku koji radi 24/7 uključuje stručnjake za Nginx koji vam mogu pomoći s podešavanjem konfiguracije i podešavanjem performansi prilagođenim vašim potrebama.

Zaključak i završni savjeti

Rekapitulacija ključnih točaka

Izvući maksimum iz Nginxa znači usredotočiti se na jasan pristup korak po korak. Započnite razumijevanjem hardverskih ograničenja i obrazaca prometa vašeg poslužitelja. Odatle fino podesite postavke kao što su radnički procesi, predmemorija i balansiranje opterećenja kako biste bili sigurni da vaš poslužitelj radi glatko i učinkovito.

Koraci za početak

  1. Provjerite konfiguracije: Prije bilo kakvih promjena uživo, koristite nginx -t kako biste provjerili pogreške u svojim konfiguracijama.
  2. Temeljne optimizacije:
    • Podudaranje radnički_procesi na CPU jezgre vašeg poslužitelja (npr. radni_procesi 4 za poslužitelj s 4 jezgre).
    • Omogućite gzip kompresiju za smanjenje veličine datoteke za 50-70%.
    • Prilagodite veličinu međuspremnika za učinkovitiju obradu zahtjeva.
  3. Napredne značajke:
    • Postavite SSL prekid za sigurne veze.
    • Konfigurirajte predmemoriju sadržaja s odgovarajućim postavkama isteka.
    • Koristite balansiranje opterećenja prilagođeno vašim obrascima prometa.
    • Instalirajte alate kao što su Prometheus i Grafana za praćenje performansi.

Praćenje performansi: Ključno je paziti na performanse vašeg poslužitelja. Pratite mjerne podatke kao što su stope zahtjeva, vrijeme odgovora i korištenje resursa kako biste uhvatili probleme prije nego što utječu na korisnike.

"Redovito nadziranje i optimizacija performansi bitni su kada hostirate Nginx. Prava kombinacija konfiguracijskih postavki i alata za nadgledanje osigurava optimalnu izvedbu poslužitelja tijekom vremena."

FAQ

Evo odgovora na neka uobičajena pitanja o konfiguracijama Nginxa koji će vam pomoći u rješavanju problema i poboljšanju performansi.

Kako mogu provjeriti da li Nginx predmemorira?

Kako biste provjerili sprema li Nginx sadržaj u predmemoriju, pregledajte zaglavlja HTTP odgovora. Tražiti:

  • X-Cache: Vrijednost "HIT" znači da je sadržaj u predmemoriji.
  • X-Cache-Status: Označava trenutni status predmemoriranja.

Za pregled zaglavlja možete koristiti ovu naredbu:

curl -I https://yourwebsite.com 

Bilješka: Provjerite jesu li ova zaglavlja konfigurirana u vašim Nginx postavkama; inače se neće pojaviti u odgovoru.

Evo primjera konfiguracije za učinkovito postavljanje međuspremnika:

client_body_buffer_size 10K; client_header_buffer_size 1K; client_max_body_size 8m; large_client_header_buffers 4 4k; 

Kako mogu omogućiti podršku za WebSocket?

Da biste omogućili podršku za WebSocket, provjerite je li vaš proxy_pass direktiva upućuje na WebSocket pozadinski poslužitelj. Detaljne upute potražite u prethodnom odjeljku o konfiguraciji WebSocketa.

Kako mogu sigurno konfigurirati SSL?

Koristite sljedeću konfiguraciju za sigurno postavljanje SSL-a:

poslužitelj { slušaj 443 ssl; naziv_poslužitelja example.com; ssl_certifikat /put/do/cert.crt; ssl_certifikat_ključ /put/do/cert.ključ; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; } 

Kako mogu optimizirati Nginx za veliki promet?

Za web stranice s velikim prometom usredotočite se na ova ključna područja:

  • Podudaranje radnički_procesi na broj CPU jezgri i povećati radničke_veze za rukovanje s više veza.
  • Postavite učinkovito predmemoriranje kako biste smanjili opterećenje poslužitelja.
  • Prilagodite veličinu međuspremnika za učinkovitiju obradu zahtjeva.

"Redovito nadziranje i optimizacija performansi bitni su kada hostirate Nginx. Prava kombinacija konfiguracijskih postavki i alata za nadgledanje osigurava optimalnu izvedbu poslužitelja tijekom vremena."

Povezani postovi na blogu

hr