Kako podesiti pametne telefone i računare. Informativni portal
  • Dom
  • Savjet
  • Nginx: konfiguracija i instalacija. Podešavanje Nginxa

Nginx: konfiguracija i instalacija. Podešavanje Nginxa

Dobar dan!

Da, po mom mišljenju, Nginx je nekoliko puta brži od Apache servera. Neki će tvrditi da se Apache može optimizirati i da će također postati brz. Ovo je tačno, ali zapamtite da se Nginx takođe može dosta overklokovati. Definitivno ću napisati poseban članak o optimizaciji u detalje.

Neka teorija o Nginxu + php-fpm

Apache php je dodatak na web serveru, takav paket je spor i troši mnogo resursa. Zbog ove nesretne arhitekture, Apache obično ne može da obradi više od 200-300 zahteva u sekundi, čak i na veoma moćnom serveru. U Nginxu se koristi drugačija arhitektura - Nginx web server sam obrađuje samo zahtjeve za statiku (slike, css, itd.), a izvršavanje php-a se daje drugom softverskom serveru - php-fpm. Php-fpm (FastCGI Process Manager) je potpuno samostalan softver, može se instalirati na isti server sa Nginxom (za male projekte), ili skinuti na poseban server. Veliki projekti obično pokreću više servera sa Nginxom, php-fpm i bazama podataka.

Zamjenom Apache servera sa Nginx + php-fpm, možete ubrzati obradu korisničkih zahtjeva i značajno uštedjeti na hardveru. Web projekat sa prometom do 10.000 jedinstvenih posetilaca dnevno može lako da živi na najjeftinijem virtuelnom serveru kompanije DigitalOcean za 5 dolara mesečno. Inače, ako pratite ovaj link - DigitalOcean, dobit ćete 10$ po registraciji, što je 2 mjeseca korištenja virtuelnog servera. Tu nema dodatnih uslova.

Ali hajdemo na posao. Opisaću proces instalacije i konfiguracije koristeći CentOS 6.x kao primjer, ali se neće mnogo razlikovati za druge Linux distribucije.

Instalacija Nginxa:

  • /var/run/php5-fpm.sock bi već trebao biti prisutan na serveru? u ubuntu 16.04 nije pronašao takav fajl u / var / run
  • 1. Instaliranje Nginx spremišta: U standardnim Linux distribucijama nema Nginx distribucije po defaultu, pa hajde da je dodamo sistemu.

    vi /etc/yum.repos.d/nginx.repo


    ime = nginx repo
    baseurl = http: //nginx.org/packages/centos/$releasever/$basearch/
    gpgcheck = 0
    omogućeno = 1

    Zatim pritisnite ": wq" i Enter za spremanje i izlaz. To je to, sada je Nginx dostupan za automatsku instalaciju preko yum menadžera paketa. Ako koristite drugu distribuciju Linuxa, idite na upute specifične za vaš sistem.

    2. Instaliranje Nginx-a iz spremišta: sada samo pokrenite naredbu za instalaciju.

    Instalirajte php-fpm:

    Php-fpm je podrazumevano dostupan na svim modernim distribucijama, pa ga samo instalirajte:

    Ovo će instalirati sam server i sve pomoćne pakete. Ako nešto ne radi, možete sami napraviti php-fpm iz izvora, za detaljna uputstva idite ovdje.

    Konfiguriranje i pokretanje Nginxa + php-fpm:

    1. Počnimo sa php-fpm-om: otvorite konfiguracioni fajl

    vi /etc/php-fpm.d/www.conf

    i upišite rad preko socketa (na ovaj način će raditi brže):

    slušaj = /var/run/php5-fpm.sock

    promijenite postojeću liniju "slušajte =" ili dodajte novu i izbrišite stari.

    2. Sada pređimo na Nginx: kreirajte konfiguracijsku datoteku za svoju prvu web lokaciju (zamijenite site1 imenom stranice, iako će tako funkcionirati)

    vi /etc/nginx/conf.d/site1.conf

    Ispod je minimalna konfiguracija, možete je samo kopirati. Sve što treba zamijeniti označeno je crvenom bojom. Ova konfiguracija je konfigurisana da služi statičkim fajlovima i pristupa jednom php fajlu - index.php. Svi moderni CMS-ovi se pokreću jednim fajlom, tako da je ova konfiguracija pogodna za većinu zadataka. Ako trebate pokrenuti druge php-fajlove, napišite ih zasebno. U ovoj konfiguraciji, datoteke stranice moraju biti smještene u / home / mysite / public_html / folder

    server (
    slušaj [ip adresa servera]: 80;
    server_name site;
    rezolver 8.8.8.8;
    error_log / var / log / nginx / site _error.log warn;
    root / home / site / public_html;
    access_log / var / log / nginx / site -access.log;
    charset utf-8;
    index index.php;
    lokacija ~. * (gif | jpg | jpeg | png | ico | swf | txt | pdf | doc | docx | exe | xls | xlsx | strings | zip | rar | 7z) $ (
    ističe 1g;
    }

    Lokacija ~. * (Html ​​| htm | js | css) $ (
    ističe 1g;
    }

    lokacija ~ ^ / index.php (
    fastcgi_pass unix: /var/run/php5-fpm.sock;
    fastcgi_param SCRIPT_FILENAME / home / site /public_html/index.php;
    uključuje / etc / nginx / fastcgi_params;
    fastcgi_param SCRIPT_NAME /index.php;
    }

    Sada stavite svoje prve datoteke web lokacije u / home / site1 / public_html / folder i spremni smo za rad.

    3. Pokretanje nginx + php-fpm:

    servis nginx start

    servis php-fpm start

    Ako ste sve uradili ispravno i nigdje niste pogriješili, rezultat će biti ovakav:

    Ako imate bilo kakvih pitanja ili trebate pojašnjenje, postavite pitanje ili ostavite komentar.

    Uvijek mi je drago pomoći!

    |

    Nginx je jedan od najpopularnijih web servera na svijetu za hosting vrlo velikih i vrlo prometnih stranica. Generalno koristi manje resursa nego Apache. Može se koristiti i kao obrnuti proxy server.

    Ovaj vodič će vas voditi kroz instalaciju Nginxa na Ubuntu 16.04 server.

    Zahtjevi

    • Ubuntu 16.04 server.
    • Ne-root korisnik s pristupom sudo komandi (više o tome u).

    Korak 1 - Instaliranje Nginxa

    Nginx paket je dostupan u standardnom Ubuntu sistemskom spremištu.

    Pošto je ovo prva interakcija sa apt sistemom pakovanja u trenutnoj sesiji, indeks paketa treba da se ažurira. Nakon toga možete instalirati Nginx.

    sudo apt-get update
    sudo apt-get install nginx

    Upravitelj paketa će zatim instalirati web server i sve njegove zavisnosti.

    Korak 2 - konfiguracija zaštitnog zida

    Prije pokretanja Nginxa, morate konfigurirati svoj zaštitni zid da podržava promet ove usluge. Tokom instalacije, Nginx se registruje kao servis sa ufw-om, tako da je vrlo lako dozvoliti promet web servera.

    Otvorite listu postavki ufw aplikacija:

    sudo ufw lista aplikacija

    Naredba će se vratiti:

    Dostupne aplikacije:
    Nginx pun
    Nginx HTTP
    Nginx HTTPS
    OpenSSH

    Kao što vidite, postoje tri Nginx profila na listi:

    • Nginx Full: Ovaj profil otvara port 80 (nešifrovani mrežni saobraćaj) i 443 (šifrovani TLS/SSL saobraćaj).
    • Nginx HTTP: Profil za nešifrovani HTTP saobraćaj na portu 80.
    • Nginx HTTPS: Profil za TLS/SSL šifrovani saobraćaj na portu 443.

    Da biste omogućili profil, unesite:

    sudo ufw dozvoli "Nginx HTTP"

    Provjerite je li profil omogućen:

    Komanda bi trebala prijaviti da je HTTP promet dozvoljen:

    Status: aktivan
    Za akciju od
    -- ------ ----
    OpenSSH ALOW Anywhere
    Nginx HTTP DOZVOLI bilo gdje
    OpenSSH (v6) ALOW Anywhere (v6)
    Nginx HTTP (v6) DOZVOLI bilo gdje (v6)

    Korak 3 - Testiranje web servera

    Jednom instaliran, Ubuntu 16.04 će automatski pokrenuti Nginx. U ovom trenutku, web server bi trebao biti u funkciji.

    Da biste potvrdili da je Nginx pokrenut, upitajte njegov status na systemd init sistemu.

    systemctl status nginx
    nginx.service - Web server visokih performansi i reverzni proxy server
    Učitano: učitano (/lib/systemd/system/nginx.service; omogućeno; unaprijed postavljeno dobavljača: omogućeno)
    Aktivan: aktivan (u toku) od pon 2016-04-18 16:14:00 EDT; prije 4min 2s
    Glavni PID: 12857 (nginx)
    CGroup: /system.slice/nginx.service
    ├─12857 nginx: glavni proces / usr / sbin / nginx -g demon uključen; master_process uključen
    └─12858 nginx: radni proces

    Kao što vidite, usluga je uspješno počela.

    Također možete pokušati posjetiti zadanu Nginx odredišnu stranicu. Dostupan je u pretraživaču po imenu domene ili IP adresi.

    Ako ne znate svoju IP adresu, možete je pronaći pomoću komandne linije. Unesite:

    ip addr prikaži eth0 | grep inet | awk "(print $2;)" | sed "s /\/.*$//"

    Naredba će vratiti više redova. Provjerite svaku adresu u pretraživaču.

    Također možete saznati kako druge tačke na mreži vide vašu IP adresu.

    sudo apt-get install curl
    curl -4 icanhazip.com

    Kada saznate svoj IP, unesite ga u svoj pretraživač kako biste bili sigurni da web server radi ispravno.

    http: // server_domain_or_IP

    Zadana Nginx odredišna stranica bi se trebala pojaviti na ekranu:

    Dobrodošli u nginx!
    Ako vidite ovu stranicu, nginx web server je uspješno instaliran i radi. Potrebna je dodatna konfiguracija.

    Korak 4 - Upravljanje Nginx procesima

    Pogledajmo nekoliko osnovnih programa za upravljanje web serverom.

    Da zaustavite Nginx, unesite:

    sudo systemctl stop nginx

    Za pokretanje, unesite:

    sudo systemctl start nginx

    Za ponovno pokretanje koristite naredbu:

    sudo systemctl restart nginx

    Da ažurirate postavke Nginxa bez prekida veze, unesite naredbu:

    sudo systemctl ponovo učitaj nginx

    Podrazumevano, Nginx se automatski pokreće kada se server pokrene. Ovo ponašanje se može isključiti:

    sudo systemctl onemogući nginx

    Za nastavak automatskog pokretanja usluge unesite:

    sudo systemctl omogući nginx

    Korak 5: Nginx datoteke i direktoriji

    Sada znate kako upravljati uslugom. Vrijeme je da se upoznate sa važnim datotekama i direktorijumima Nginxa.

    Sadržaj

    • / var / www / htm: Ovaj direktorij sadrži trenutni sadržaj stranice. Podrazumevano, sadrži samo zadanu odredišnu stranicu koju ste već vidjeli. Ovaj direktorij se može promijeniti u Nginx konfiguracijskoj datoteci.

    Postavke servera

    • / etc / nginx: direktorij postavki nginx u kojem su pohranjene sve konfiguracijske datoteke.
    • /etc/nginx/nginx.conf: Glavna Nginx konfiguracijska datoteka koja sadrži postavke globalnog web servera.
    • / etc / nginx / sites-available: direktorij koji sadrži konfigurirane serverske blokove (virtuelne hostove) svake pojedinačne stranice. Nginx neće koristiti ove blokove sve dok se veza do njih ne pojavi u direktoriju s omogućenim web lokacijama (više o tome kasnije). Obično se ovaj direktorij koristi za konfiguriranje virtualnih hostova.
    • / etc / nginx / sites-enabled /: direktorij koji sadrži omogućene blokove servera. Da biste omogućili blokiranje, morate kreirati simboličku vezu do datoteke pohranjene u direktoriju sites-available.
    • / etc / nginx / snippets: Ovaj direktorij pohranjuje isječke postavki koje se mogu uključiti u Nginx konfiguraciju. Tipično, potencijalno ponovljivi segmenti konfiguracije se dodaju kao fragmenti.

    Dnevnici

    • /var/log/nginx/access.log: Ovaj dnevnik bilježi sve zahtjeve koje je primio Nginx web server (osim ako nije drugačije konfigurisano).
    • /var/log/nginx/error.log: Ovaj dnevnik pohranjuje sve Nginx poruke o grešci.

    Zaključak

    Nginx web server je sada instaliran i spreman za rad. Koristite ga za posluživanje sadržaja vaše stranice.

    Zdravo, dragi korisnik Habrahabra. Moja priča će biti o tome kako postaviti scenu za projekte lokalnog web razvoja u Ubuntu 16.04.1 LTS operativnom sistemu.

    U ovom članku želio bih razjasniti i razjasniti moguće poteškoće povezane s instaliranjem i konfiguracijom softvera koji je neophodan za moderni web razvoj, s kojima se mogu suočiti programeri početnici i ne samo.

    Tehnologije koje će se koristiti u članku: nginx, php-fpm.

    Prije početka priče, želim napomenuti da sam sve ove radnje radio na "golom" sistemu.
    Radit ću s paket menadžer aptitude. Također preporučujem ažuriranje indeksa paketa i samih paketa prije instaliranja softvera. U ovom članku ćemo zajedno uraditi ove korake.

    Idi!

    Instaliranje menadžera paketa sposobnost, ažuriranje indeksa i paketa

    Instaliraj:

    Sudo apt install aptitude
    Ažuriramo indeks.

    Sudo ažuriranje sposobnosti
    Ažuriramo pakete (naredba će ažurirati sve pakete za koje postoje nove verzije, ako je potrebno ukloniti pakete, to će biti učinjeno).

    Sudo aptitude puna nadogradnja

    Instalacija i konfiguracija nginx(verzija> = 1.10.0)

    Instaliraj.

    Sudo aptitude instalira nginx
    Lansiramo.

    Sudo servis nginx start
    Provjeravamo verziju kako bismo bili sigurni da nismo instalirali staru, odnosno ispod 1.10.0.

    Instalirali smo ga i pokrenuli, sada idemo u direktorij gdje je instaliran naš nginx i pogledajmo njegovu strukturu. Direktorij nginx nalazi se duž ove staze:

    CD / etc / nginx /
    Možete pogledati sadržaj direktorija pomoću naredbe ls, sa zastavicama -la bit će zgodnije pregledati sadržaj direktorija (zapravo, ova naredba sa određenim oznakama može se detaljnije i preciznije opisati, ali danas imamo drugu temu).

    Ls -la
    Trenutno nas zanimaju dva direktorija koja vidite na snimku ekrana. Ovo su direktoriji dostupni na web lokacijama i na kojima je omogućena web lokacija.

    Idemo u direktorij sites-available i počnimo s konfiguriranjem našeg virtualnog hosta (stranice).

    Cd / etc / nginx / sites-available
    Prije nego počnemo kreirati konfiguracijsku datoteku, provjerimo šta imamo u ovom direktoriju. U mom slučaju direktorij nije prazan, već sadrži konfiguracijske datoteke, prepisao sam ih da vas ne zavaravam.

    Važna digresija

    U slučaju instaliranja nginxa "od nule", odnosno "od nule", budući da prilikom uklanjanja nginx-a naredbom
    sudo apt-get remove nginx ili sudo apt remove nginx konfiguracijske datoteke ostaju, a ako odjednom ne razumijete zašto nginx ne radi i želite ga ponovo instalirati (obično početnici Linux korisnici pribjegavaju ovome), tada nakon ponovne instalacije neće raditi ispravno , zbog činjenice da su u starim konfiguracijskim datotekama (ne uklanjaju se nakon brisanja naredbom za uklanjanje) upisane pogrešne postavke, morat će se ukloniti ili ispravno konfigurirati, tek tada će nginx raditi.

    Preporučujem deinstaliranje pomoću sudo apt-get purge nginx ili sudo apt purge nginx. Ako koristite upravitelj paketa aptitude, naredba sudo aptitude purge nginx uklanja cijeli paket, uključujući sve ovisnosti i konfiguracijske datoteke.


    Ovaj direktorij će po defaultu imati jednu datoteku, nazvanu default. Sadržat će konfiguracijsku datoteku s primjerom, sa komentarima, možete je proučiti u slobodno vrijeme ili je možete potpuno izbrisati (uvijek možete pogledati zvaničnu dokumentaciju).

    Ls -la

    Kreirajmo vlastitu konfiguracijsku datoteku koja će odgovarati imenu domene naše lokalne stranice (ili stvarnom, ako već znate njeno ime). Ovo je zgodno, u budućnosti, kada će biti puno konfiguracijskih datoteka, to će vas spasiti od zabune u njima. Za mene će se ovaj fajl zvati project.local.

    Sudo touch project.local
    Hajde da vidimo šta se desilo.

    Sada ga otvorimo u editoru, ja ću ga otvoriti u nano.

    Sudo nano project.local
    Vidimo da je to prazno. Sada pređimo na formiranje našeg fajla. Potrebno je dovesti konfiguraciju u formu opisanu u nastavku. Opisaću samo vitalne direktive ovog fajla, neću opisivati ​​ostalo, pošto to trenutno nije važno, na kraju krajeva, imamo temu za osnovnu konfiguraciju. Ove postavke sa "slajdom" bit će dovoljne za razvoj lokalnih projekata, ne samo malih, već i prilično velikih. U sljedećim člancima ću posebno opisati svaku korištenu direktivu (ovako se zovu linije, na primjer ime_servera) ove datoteke.

    Pogledajte komentare direktno u konfiguracionoj datoteci.

    Server (slušaj 80; # slušanje porta na nginx server_name project.local; # ime domene povezano sa trenutnim korijenskim virtuelnim hostom /home/stavanger/code/project.local; # direktorij u kojem se projekt nalazi, put do indeksa ulazne točke index.php; # add_header Access-Control-Allow-Origin *; # služi statičke datoteke direktno lokacija ~ * \. (jpg | jpeg | gif | css | png | js | ico | html) $ (access_log off; ističe max; log_not_found off ;) lokacija / (# add_header Access-Control-Allow-Origin *; try_files $ uri $ uri / /index.php?$query_string;) lokacija ~ * \ .php $ (try_files $ uri = 404; fastcgi_split_path_info ^ ( . + \ .php) (/.+) $; fastcgi_pass unix: /var/run/php/php7.0-fpm.sock; # omogući php-fpm socket fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name; fastcgi_script_params ) lokacija ~ /\.ht (zabrani sve;))
    Sačuvamo fajl. Sada moramo provjeriti ima li u njemu grešaka. Možemo to uraditi kao tim.

    Sudo nginx -t
    Ako vidimo takve informacije kao na snimku ekrana, onda je sve ispravno za nas, možemo nastaviti s konfiguracijom. Ako dobijete bilo kakvu grešku, vrijedi ponovo provjeriti konfiguracijski fajl.

    Sada trebamo aktivirati konfiguracijsku datoteku, u direktoriju / etc / nginx / sites-enabled / trebamo kreirati simboličku vezu (simboličku vezu). Ako imate nginx instaliran "od nule", onda u ovom direktoriju postoji simbolična veza do zadane datoteke, koja je gore opisana, možete je izbrisati ako vam nije potrebna. Idite na željeni direktorij.

    Cd / etc / nginx / sites-enabled /
    Sada smo u pravom imeniku. Kreirajmo našu simboličku vezu. Da biste ga kreirali, koristite naredbu ln sa oznakom -s, tada ćemo naznačiti putanju do naše project.local konfiguracije.

    Sudo ln -s /etc/nginx/sites-available/project.local
    Pogledajmo našu kreiranu simboličku vezu.

    Da biste bili sigurni da radimo sve kako treba, ponovo pokrenite naredbu.

    File domaćini

    Ova datoteka se nalazi na putu / etc / hosts. Prisustvo unosa u njemu omogućava vam da pokrenete nginx koristeći localhost kao domenu. U ovoj datoteci možete dodijeliti alternativne pseudonime, na primjer, za naš projekt project.local, mi ćemo dodijeliti domenu project.local.

    Otvorite datoteku u nano editoru.

    Sudo nano / etc / hosts
    Imat ćete druge informacije u ovoj datoteci, samo ih zanemarite. Samo treba da dodate liniju kao na mom snimku ekrana.

    Instalacija php-fpm (>=7.0)

    sudo aptitude install php-fpm
    Provjeravamo instaliranu verziju, za svaki slučaj, iako je u Ubuntu 16.04.1 verzija 7.0 u spremištima.

    PHP-fpm7.0 -v

    Vodimo računa da je sve u redu. Pokrećemo php-fpm.

    Sudo servis php7.0-fpm start
    Ako uređujete konfiguracije, ne zaboravite ponovo pokrenuti demon. Tako i radi. Ali ovo nam ne treba.

    Sudo servis php7.0-fpm restart
    Ovim je završena instalacija i konfiguracija php-fpm-a. Istina, to je sve. Ovo nije magija, put do php-fpm socketa je već napisan u konfiguracionoj datoteci. Naravno, možda će vam trebati neke php ekstenzije za razvoj vaših ličnih projekata, ali možete ih instalirati kako vam zatrebaju.

    Idemo sada u direktorij s našim projektom, imam ga na ovoj stazi.

    CD /home/stavanger/code/project.local
    Idemo gore u direktorij i napravimo prava 777 (to jest, napravit ćemo puna prava na direktorij sa našim project.local). To će nas u budućnosti spasiti od nepotrebnih problema.

    Cd .. sudo chmod -R 777 project.local
    Ovo završava konfiguraciju softvera, napravimo probnu datoteku u našem radnom direktoriju project.local i uvjerimo se da sve radi. Napraviću index.php fajl sa ovakvim sadržajem.

    Idemo u pretraživač i vidimo da nam sve radi odlično! Php tumač uključujući.

    Srdačan pozdrav čitaocima, Stavanger.

    Nginx web server je jedan od najpopularnijih web servera sa vrlo visokim performansama i brzom obradom statičkih zahtjeva korisnika. Ako je ispravno konfigurisan, možete postići vrlo visoke performanse sa ovog web servera. Nginx je vrlo brz u rukovanju statičkim datotekama, bilo da se radi o html stranicama ili drugim vrstama resursa.

    U jednom od prethodnih članaka već smo razmatrali postavljanje njegovih glavnih parametara, u istom članku želim više da se fokusiram na performanse i pripremu web servera za upotrebu u borbenim uslovima. Što se tiče Linux distribucije, danas ćemo razmotriti CentOS, ovaj sistem se često koristi na serverima i može doći do poteškoća s konfiguracijom Nginxa. Zatim ćemo razmotriti postavljanje Nginx CentOS-a, razgovarat ćemo o tome kako omogućiti punu podršku za http2, google pagespeed i konfigurirati glavnu konfiguracijsku datoteku.

    Nginx postoji u zvaničnim CentOS repozitorijumima i najverovatnije je već instaliran na vašem sistemu. Ali želimo da stranica radi na http2 protokolu, koji vam omogućava prijenos svih podataka jednom vezom, a to povećava performanse. Da biste radili preko http2, morate konfigurirati SSL certifikat, ali to je već pokriveno u članku Dobivanje Lets Encrypt Nginx certifikata. Ali to nije sve. Većina pretraživača sada koristi ALPN za prebacivanje sa običnog SSL-a na HTTP2.0, a podržan je od OpenSSL-a 1.02. Dok spremišta imaju samo OpenSSL 1.01. Stoga moramo instalirati verziju Nginxa izgrađenu sa OpenSSL 1.02. Za ovo možete koristiti Broken Repo:

    sudo yum -y instalirati yum-utils
    # sudo yum-config-manager --add-repo https://brouken.com/brouken.repo

    Ako koristite EPEL spremište, tada morate naznačiti da ne morate preuzimati Nginx iz njega:

    sudo yum-config-manager --save --setopt = epel.exclude = nginx *;

    Sada, da instalirate ispravnu verziju Nginxa, samo upišite:

    sudo yum install nginx

    Biće instalirana najnovija verzija Nginxa 1.13.2, sa punom podrškom za ALPN. Dalje, idemo na postavljanje.

    2. Konfiguriranje Nginxa

    Prvi korak je razmatranje strukture konfiguracijske datoteke. Na prvi pogled, sve ovdje može izgledati vrlo zbunjujuće, ali tamo je sve sasvim logično:

    globalne opcije
    događaji ()
    http (
    server (
    lokacija ()
    }
    server ()
    }

    Prvo, postoje globalne opcije koje postavljaju glavne parametre programa, na primjer, od kojeg korisnika će se pokrenuti i broj procesa. Zatim postoji dio događaji, koji opisuje kako će Nginx reagovati na dolazne konekcije, zatim postoji odjeljak http, koji kombinuje sva podešavanja vezana za rad http protokola. Sadrži dio server, svaki takav odjeljak je odgovoran za zaseban domen, odjeljak servera sadrži sekcije lokacija, od kojih je svaki odgovoran za određeni URL zahtjeva, imajte na umu da nije datoteka na serveru, kao u Apacheu, već URL zahtjeva.

    Mi ćemo napraviti glavne globalne postavke u /etc/nginx/nginx.conf datoteci. Zatim ćemo razmotriti šta ćemo tačno promijeniti i koje vrijednosti je poželjno postaviti. Počnimo s globalnim opcijama:

    • korisnik- korisnik u čije ime će server biti pokrenut mora biti vlasnik direktorija sa fajlovima sajta, a php-fpm mora biti pokrenut u njegovo ime;
    • worker_processes- broj Nginx procesa koji će biti pokrenuti, morate instalirati tačno onoliko koliko imate jezgri, na primjer, ja imam 4;
    • worker_cpu_afinity- ovaj parametar vam omogućava da dodijelite svaki proces posebnom procesorskom jezgru, postavite vrijednost na auto tako da program sam bira šta i čemu priložiti;
    • worker_rlimit_nofile- maksimalan broj datoteka koje program može otvoriti, za svaku vezu su vam potrebna najmanje dva fajla i svaki proces će imati broj veza koji ste naveli, tako da je formula sljedeća: worker_processes * worker_connections * 2, parametar worker_connections analiziraćemo malo u nastavku;
    • pcre_jit- omogućite ovu opciju da ubrzate obradu regularnih izraza koristeći JIT kompilaciju;

    U odjeljku događaja trebate konfigurirati dva parametra:

    • worker_connections- broj konekcija za jedan proces mora biti dovoljan za rukovanje dolaznim vezama. Prvo, moramo znati koliko ovih dolaznih veza ima, za to gledamo statistiku na adresi ip_server / nginx_status. U nastavku ćemo razmotriti kako to omogućiti. U redu Active Connections vidimo broj aktivnih konekcija na server, takođe morate uzeti u obzir da se konekcije na php-fpm takođe računaju. Zatim obratite pažnju na prihvaćena i obrađena polja, prvo prikazuje obrađene veze, drugo - broj prihvaćenih. Vrijednosti moraju biti iste. Ako se razlikuju, onda nema dovoljno veza. Pogledajte primjere, prvi snimak je problem, drugi je redoslijed. Za moju konfiguraciju, optimalna brojka može biti 200 veza (ukupno 800, s obzirom na 4 procesa):

    • multi_accept- omogućava programu da prihvati više konekcija istovremeno, takođe ubrzava rad, sa velikim brojem konekcija;
    • accept_mutex- postavite vrijednost ovog parametra na isključeno, tako da će svi procesi odmah dobiti obavijest o novim konekcijama;

    Također je preporučljivo koristiti direktivu use epoll u odjeljku događaja, jer je ovo najefikasniji metod za obradu dolaznih konekcija za Linux, ali se ovaj metod koristi po defaultu, tako da ne vidim razloga da ga dodajem ručno. Razmotrimo još nekoliko parametara iz http odjeljka:

    • sendfile- koristiti metodu sendfile za slanje podataka. Najefikasnija metoda za Linux.
    • tcp_nodelay, tcp_nopush- šalje zaglavlja i tijelo zahtjeva u jednom paketu, radi malo brže;
    • keepalive_timeout- timeout za održavanje veze sa klijentom, ako nemate jako spore skripte, onda će biti dovoljno 10 sekundi, postavite vrijednost koliko je potrebno da korisnik može biti povezan na server;
    • reset_timeout_connection- prekinuti vezu nakon isteka.
    • open_file_cache- keširajte informacije o otvorenim datotekama. Na primjer, open_file_cache max = 200000 neaktivan = 120s; max - maksimalan broj datoteka u kešu, vrijeme keširanja.
    • open_file_cache_valid- kada trebate provjeriti relevantnost fajlova. Na primjer: open_file_cache_valid 120s;
    • open_file_cache_min_uses- keširati samo datoteke koje su otvorene određeni broj puta;
    • open_file_cache_errors- zapamtite greške pri otvaranju datoteka.
    • if_modified_since- postavlja kako će se obraditi zaglavlja if-modified-since. Koristeći ovo zaglavlje, pretraživač može primiti odgovor 304 ako se stranica nije promijenila od posljednjeg pregleda. Moguće opcije - ne slati - isključiti, poslati ako se vrijeme tačno poklapa - tačno, poslati ako se vrijeme poklapa tačno ili više - prije;

    Ovako će izgledati postavka nginx conf:

    korisnik nginx;
    worker_processes 4;
    worker_cpu_affinity auto;
    worker_rlimit_nofile 10000;
    pcre_jit on;

    error_log /var/log/nginx/error.log warn;
    load_module "modules / ngx_pagespeed.so";

    događaji (
    multi_accept on;
    accept_mutex isključen;
    worker_connections 1024;
    }

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;

    open_file_cache max = 200000 neaktivan = 20s;
    open_file_cache_valid 120s;
    open_file_cache_errors uključeno;

    reset_timeout_connection on;
    client_body_timeout 10;
    keepalive_timeout 65;

    uključuje /etc/nginx/sites-enabled.*.conf

    3. Postavljanje http2

    Neću detaljno opisivati ​​podešavanje odjeljka servera, jer sam to već uradio u članku Instaliranje Nginx-a u Ubuntu i ovdje nemam šta dodati, postavljanje SSL-a je prilično opsežna tema i također će se raspravljati u posebnom članku . Ali da biste postavili http2 morate već imati SSL. Zatim samo podesite direktivu slušanja u odjeljku vašeg servera:

    slušaj 194.67.215.125:443 default_server;

    slušaj 194.67.215.125:443 http2 default_server;

    Na tako jednostavan način možete omogućiti http2 ako je prije instalirana ispravna verzija Nginxa.

    4. Podešavanje PageSpeed

    Google Pagespeed je Nginx modul koji vrši razne optimizacije kako bi se stranice brže učitavale, web server radi efikasnije, a korisnici osjećaju manje nelagode. Ovo uključuje keširanje, optimizaciju html koda, optimizaciju slike, javascript i css kombinaciju koda i još mnogo toga. Sve ovo se radi na Nginx nivou, tako da je efikasnije nego da to radite u php-u. Ali postoji jedan nedostatak, modul uklanja zaglavlje Last Modified.

    Činjenica je da PageSpeed ​​postavlja veoma dugu liniju keša za sve datoteke i dodaje svoj hash imenu datoteke. Dakle, brzina učitavanja resursa je mnogo veća, jer će pretraživač tražiti samo fajlove sa novim hešom, a LastModified se briše kako bi korisnici mogli da vide promene ako se bilo koja datoteka promeni. Pogledajmo sada kako instalirati modul. Morat ćemo ga izgraditi iz izvora.

    Prvo instalirajte alate za izgradnju, veoma je važno, ako ne instalirate, onda ćete dobiti grešku i nećete znati šta da radite:

    yum install wget gcc cmake raspakujte gcc-c ++ pcre-devel zlib-devel

    Preuzmite i raspakujte Nginx izvore za svoju verziju, na primjer, 1.13.3:

    wget -c https://nginx.org/download/nginx-1.13.3.tar.gz
    # tar -xzvf nginx-1.13.3.tar.gz

    Postavljanje nginx servera ne uključuje ponovnu izgradnju i zamjenu programa iz spremišta, mi samo koristimo ove izvore za izgradnju modula. Preuzmite i raspakujte izvore PageSpeed:

    wget -c https://github.com/pagespeed/ngx_pagespeed/archive/v1.12.34.2-stable.zip
    # unzip v1.12.34.2-stable.zip

    Preuzmite i raspakujte biblioteku optimizacije PageSpeed ​​u izvornu fasciklu modula:

    cd ngx_pagespeed-1.12.34.2-stable /
    # wget -c https://dl.google.com/dl/page-speed/psol/1.12.34.2-x64.tar.gz
    # tar -xvzf 1.12.34.2-x64.tar.gz

    Preuzmite i raspakujte OpenSSL 1.02 izvore:

    wget -c https://www.openssl.org/source/openssl-1.0.2k.tar.gz -O /opt/lib/$OPENSSL.tar.gz
    # tar xvpzf openssl-1.0.2k.tar.gz

    Sada treba da napravimo modul. Prvo, pogledajmo opcije s kojima je izgrađen trenutni Nginx:

    A sada idemo u mapu sa Nginxom, zamjenjujemo sve primljene opcije, opciju --add-dynamic-module za PageSpeed, OpenSSL i pokušavamo napraviti:

    cd nginx-1.13.3
    # ./configure --prefix = / etc / nginx --sbin-path = / usr / sbin / nginx --modules-path = / usr / lib64 / nginx / modules --conf-path = / etc / nginx / nginx .conf --error-log-path = / var / log / nginx / error.log --http-log-path = / var / log / nginx / access.log --pid-path = / var / run / nginx .pid --lock-path = / var / run / nginx.lock --http-client-body-temp-path = / var / cache / nginx / client_temp --http-proxy-temp-path = / var / cache / nginx / proxy_temp --http-fastcgi-temp-path = / var / cache / nginx / fastcgi_temp --http-uwsgi-temp-path = / var / cache / nginx / uwsgi_temp --http-scgi-temp-path = / var / cache / nginx / scgi_temp --user = nginx --group = nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-modulewith_http_module --dulewith_http h-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt = "- O2 -g -pipe -Wall -Wp, -D_FORTIFY_SOURCE = 2 -fexceptions -fstack-protector-strong --param = ssp-buffer-size = 4 -grecord-gcc-switchs -m64 -mtune = generički "--with-ld-opt = --with -openssl = $ HOME / openssl-1.0.2k --add-dynamic-module = $ HOME / ngx_pagespeed-1.12.34.2-stabilan $ (PS_NGX_EXTRA_FLAGS)
    # make

    Ako je sve urađeno ispravno, tada ćete na izlazu dobiti modul ngx_pagespeed.so u fascikli obj, morate ga kopirati u mapu / etc / nginx / modules:

    cp ngx_pagespeed.so /etc/nginx/modules/ngx_pagespeed.so

    Kreirajte folder za keš memoriju:

    mkdir -p / var / ngx_pagespeed_cache
    # chown -R nginx: nginx / var / ngx_pagespeed_cache

    Sada dodajte ovu liniju da omogućite modul u /etc/nginx/nginx.conf:

    load_module "modules / ngx_pagespeed.so";

    Nginx je jedan od najpopularnijih web servera na svijetu i koristi se za hostovanje najvećih i najprometnijih stranica na Internetu. Nginx je u ogromnoj većini slučajeva manje zahtjevan za resurse od Apachea; može se koristiti i kao web server i kao reverse proxy.

    U ovom vodiču ćemo vas provesti kroz proces instaliranja Nginxa na vaš Ubuntu 16.04 server.

    Prije instalacije

    Prije nego počnete slijediti korake u ovom članku, uvjerite se da imate redovnog korisnika koji nije root sa sudo privilegijama. Možete saznati kako postaviti takvog korisnika na vaš server iz.

    Nakon što ste kreirali takvog korisnika, prijavite se na server koristeći njegovo korisničko ime i lozinku. Sada ste spremni da slijedite korake u ovom članku.

    Korak 1: Instaliranje Nginx web servera

    Nginx je dostupan u standardnim Ubuntu repozitorijumima, tako da je instalacija prilično jednostavna.

    Pošto ćemo prvi put koristiti apt tokom ove sesije, počet ćemo ažuriranjem lokalne liste paketa. Zatim, instalirajmo server:

    • sudo apt-get update
    • sudo apt-get install nginx

    Kao rezultat izvršavanja ovih naredbi, apt-get će instalirati Nginx i druge pakete neophodne za njegov rad na vašem serveru.

    Korak 2: konfigurisanje zaštitnog zida

    Prije nego što počnemo provjeravati radi li Nginx, moramo konfigurirati naš zaštitni zid da omogući pristup usluzi. Tokom instalacije, Nginx se registruje na ufw firewall servisu. Stoga je postavljanje pristupa prilično jednostavno.

    Za prikaz postavki pristupa za aplikacije registrirane u ufw, unesite naredbu:

    • sudo ufw lista aplikacija

    Kao rezultat izvršavanja ove naredbe, prikazat će se lista profila aplikacije:

    Dostupne aplikacije: Nginx Full Nginx HTTP Nginx HTTPS OpenSSH

    Kao što možete vidjeti iz ovog izlaza, postoje tri profila konfigurirana za Nginx:

    • Nginx pun: Ovaj profil otvara portove 80 (normalan, nešifrirani web promet) i 443 (promet šifriran korištenjem TLS/SSL).
    • Nginx HTTP: Ovaj profil otvara samo port 80 (normalan, nešifrirani web promet).
    • Nginx HTTPS: Ovaj profil otvara samo port 443 (saobraćaj je šifriran pomoću TLS/SSL).

    Preporučuje se da konfigurišete ufw da dozvoljava samo saobraćaj koji izričito želite da dozvolite. Pošto još nismo konfigurisali SSL za naš server, u ovom članku ćemo dozvoliti samo saobraćaj na portu 80.

    Ovo se može uraditi sljedećom komandom:

    • sudo ufw dozvoli "Nginx HTTP"

    Promjene možete provjeriti unosom naredbe:

    • sudo ufw status

    Kao rezultat, trebao bi biti prikazan sljedeći izlaz:

    Status: aktivan Za radnju od - ------ ---- OpenSSH ALOW Anywhere Nginx HTTP ALOW Anywhere OpenSSH (v6) ALOW Anywhere (v6) Nginx HTTP (v6) ALOW Anywhere (v6)

    Korak 3: Provjera da web server radi

    Kada se proces instalacije završi, Ubuntu 16.04 će automatski pokrenuti Nginx. Stoga bi web server već trebao biti pokrenut.

    Ovo možemo provjeriti pokretanjem sljedeće naredbe:

    • systemctl status nginx
    ● nginx.service - Web server visokih performansi i reverzni proxy server Učitano: učitano (/lib/systemd/system/nginx.service; omogućeno; unapred podešeno dobavljača: omogućeno) Aktivno: aktivno (pokreće) od 18.04.2016. 16:14:00 EDT; prije 4min 2s Glavni PID: 12857 (nginx) CGroup: /system.slice/nginx.service ├─12857 nginx: glavni proces / usr / sbin / nginx -g daemon uključen; master_process na └─12858 nginx: radni proces

    Kao što možete vidjeti iz gornjeg izlaza, usluga je pokrenuta i radi. Ipak, mi ćemo se pobrinuti da bude u potpunosti funkcionalan tako što ćemo zatražiti web stranicu.

    Da bismo to učinili, možemo provjeriti da li je prikazana Nginx web stranica, koja je po defaultu dostupna kada unesete ime domene ili IP adresu servera.

    Ako ne želite da konfigurišete ime domene za vaš server, možete koristiti javnu IP adresu vašeg servera. Ako ne znate javnu IP adresu servera, ovu IP adresu možete pronaći sljedećom naredbom:

    • ip addr prikaži eth0 | grep inet | awk "(print $2;)" | sed "s /\/.*$//"

    Kao rezultat, biće prikazano nekoliko IP adresa. Pokušajte svaki od njih zalijepiti u svoj pretraživač.

    Drugi način da odredite svoju IP adresu je da provjerite kako je vaš server vidljiv sa Interneta:

    • sudo apt-get install curl
    • curl -4 icanhazip.com

    Ukucajte dobijenu IP adresu ili naziv domene u svoj web pretraživač. Trebali biste vidjeti zadanu Nginx stranicu.

    HTTP: // ime_domena_ili_IP_adresa

    Ako vidite sličnu stranicu u svom pretraživaču, uspješno ste instalirali Nginx.

    Korak 4: Upravljanje Nginx procesom

    Sada kada je Nginx instaliran i kada smo potvrdili da radi, pogledajmo neke osnovne komande za upravljanje našim web serverom.

    Za zaustavljanje web servera koristite naredbu:

    • sudo systemctl stop nginx

    Da pokrenete zaustavljeni web server, upišite:

    • sudo systemctl start nginx

    Možete koristiti sljedeću naredbu za ponovno pokretanje web servera:

    • sudo systemctl restart nginx

    Ako unesete promjene u konfiguraciju Nginxa, često je možete ponovo pokrenuti bez zatvaranja veza. Da biste to učinili, možete koristiti sljedeću naredbu:

    • sudo systemctl ponovo učitaj nginx

    Podrazumevano, Nginx je konfigurisan da se pokreće automatski kada se server pokrene. Ako vam ne treba ovakvo ponašanje web servera, možete ga onemogućiti sljedećom naredbom:

    • sudo systemctl onemogući nginx

    Da ponovo omogućite Nginx da se pokrene pri pokretanju servera, unesite:

    • sudo systemctl omogući nginx

    Korak 5: Osnovne Nginx datoteke i direktoriji

    Sada kada znamo osnovne komande za upravljanje web serverom, pogledajmo glavne direktorije i datoteke.

    Sadržaj

    • / var / www / html: Web sadržaj, koji se po defaultu sastoji samo od Nginx test stranice koju smo vidjeli ranije, nalazi se u / var / www / html direktoriju. Put do ovog direktorija može se konfigurirati u Nginx konfiguracijskim datotekama.

    Konfiguracija servera

    • / etc / nginx: Nginx konfiguracijski direktorij. Sve Nginx konfiguracijske datoteke nalaze se u ovom direktoriju.
    • /etc/nginx/nginx.conf: glavna Nginx konfiguracijska datoteka. Ova datoteka se koristi za izmjene globalne Nginx konfiguracije.
    • / etc / nginx / sites-available: direktorij u kojem su pohranjeni "blokovi servera" za svaku lokaciju (blokovi servera su otprilike ekvivalentni virtuelnim hostovima u Apacheu). Nginx neće koristiti konfiguracijske datoteke u ovom direktoriju ako nemaju odgovarajuće veze u direktoriju s omogućenim web lokacijama (pogledajte dolje). Obično se sva podešavanja bloka servera vrše u ovom direktorijumu, a zatim se sajt aktivira kreiranjem veze u drugom direktorijumu.
    • / etc / nginx / sites-enabled /: ovaj direktorij pohranjuje blokove servera za aktivirane stranice. Ovo se obično postiže povezivanjem sa profilima konfiguracije sajta koji se nalaze u direktorijumu dostupnih lokacija.
    • / etc / nginx / snippets: ovaj direktorij pohranjuje isječke konfiguracije koji se mogu koristiti prilikom konfiguriranja bilo koje stranice. Isječci konfiguracije koji se potencijalno mogu koristiti u više konfiguracijskih datoteka odlični su kandidati za kreiranje ovih isječaka.

    Dnevnici servera

    • /var/log/nginx/access.log: Svaki zahtjev prema vašem web serveru upisuje se u ovu datoteku dnevnika, osim ako nije drugačije navedeno u Nginx postavkama.
    • /var/log/nginx/error.log: Sve Nginx greške bit će zabilježene u ovoj datoteci.

    Zaključak

    Sada kada imate instaliran i konfiguriran web server, možete odabrati koji sadržaj ćete servirati korisnicima i koje druge tehnologije možete koristiti pored web servera.

    Top srodni članci