Apache ja nginx¶
Voit parantaa asiakkaiden verkkosivustoja isännöivän WWW-palvelimen (Apache) toimintaa käyttämällä nginx-palvelinta, joka on täydentävä suorituskykyinen WWW-palvelin ja jota käytetään tyypillisesti käänteisenä välityspalvelimena. Tämä WWW-palvelin on suunniteltu erityisesti suurten staattisen sisällön määrien (kuten kuvien, videoiden, css- ja xml-tiedostojen ja niin edelleen) toimittamiseen. Apacheen verrattuna nginx on huomattavasti tehokkaampi käsitellessään suurta määrää samanaikaisia yhteyksiä. Toinen tämän WWW-palvelimen etu Apacheen verrattuna on, että nginx vie asiakasyhteyttä kohden merkittävästi vähemmän muistia.
Nginxin kaikkien etujen hyödyntämiseksi Plesk määrittää sen käänteiseksi välityspalvelimeksi, joka sijaitsee Internetin ja Apachen välissä (katso alla oleva kaavio). Tämä tarkoittaa, että nginx on etupään WWW-palvelin, joka käsittelee kaikki sivuston kävijöiden saapuvat pyynnöt. Pyynnöt lähetetään Apachelle, joka puolestaan erottaa staattisen ja dynaamisen sisällön pyynnöt. Jos pyyntö koskee staattista tiedostoa (kuten jpg-, css-, html-tiedostoa ja niin edelleen), Apache välittää pyynnön kaikkien rekisteröityjen käsittelijöiden läpi (soveltaa .htaccess-hakemistotason määritystä, kirjoittaa URL-osoitteen uudelleen ja niin edelleen) ja palauttaa nginxille vastauksen, joka sisältää vain pyydetyn tiedoston sijainnin tiedostojärjestelmässä. nginx paikantaa tiedoston ja lähettää sen asiakkaalle. Jos pyyntö koskee dynaamista tiedostoa (kuten PHP-skriptiä), Apache suorittaa tiedoston ja lähettää vastauksen nginxille, joka toimittaa sen asiakkaalle.
Nginxin ja Apachen tällainen yhdistelmä tarjoaa seuraavat edut:
Verkkosivuston samanaikaisten yhteyksien enimmäismäärä kasvaa.
Palvelimen suorittimen ja muistiresurssien kulutus vähenee. Suurin vaikutus saavutetaan verkkosivustoilla, joilla on paljon staattista sisältöä (kuten valokuvavalikoimat, videosuoratoistosivustot ja niin edelleen).
Hitaita yhteyksiä (GPRS, EDGE, 3G ja niin edelleen) käyttävien kävijöiden palvelu tehostuu. Esimerkiksi asiakas, jonka yhteysnopeus on 10 KB/s, pyytää PHP-skriptiä, joka tuottaa 100 KB:n vastauksen. Jos palvelimella ei ole nginxiä, vastauksen toimittaa Apache. Vastauksen toimittamiseen tarvittavien 10 sekunnin ajan Apache ja PHP kuluttavat edelleen täyden järjestelmäresurssin tälle avoimelle yhteydelle. Jos nginx on asennettu, Apache välittää vastauksen nginxille (nginxin ja Apachen välinen yhteys on erittäin nopea, koska molemmat sijaitsevat samalla palvelimella) ja vapauttaa järjestelmäresurssit. Koska nginxin muistijalanjälki on pienempi, järjestelmän kokonaiskuormitus pienenee. Jos sinulla on suuri määrä tällaisia hitaita yhteyksiä, nginxin käyttö parantaa merkittävästi verkkosivuston suorituskykyä.
Tekniset yksityiskohdat siitä, miten Plesk käsittelee HTTP-pyyntöjä nginxin avulla, esitetään seuraavaksi tässä osiossa. Ohjeet nginx-tuen käyttöön ottamiseksi Pleskissä löytyvät osiosta Installing nginx. Jos et halua käyttää nginxiä, tee Apachesta etupään WWW-palvelin noudattamalla osion Turning off nginx ohjeita. Jos haluat nginxin käsittelevän kaikki verkkosisällön HTTP-pyynnöt, katso Adjusting Apache Web Server Settings.
Kuinka Plesk käsittelee HTTP-pyyntöjä nginxin kanssa¶
Saumattomaan nginxin integrointiin Apachen kanssa Plesk käyttää kahta lisä-Apache-moduulia:
mod_aclr2 Tämä moduuli määrittää käsittelijän, joka suoritetaan kaikkien muiden Apache-moduulien (mod_rewrite,
.htaccess-moduulit, mod_php ja niin edelleen) käsittelijöiden jälkeen. Siksi jos pyyntö koskee dynaamista sisältöä, mod_aclr2 ei koskaan saa sitä, koska pyynnön palvelevat tiettyjen Apache-moduulien (mod_php, mod_perl, mod_cgi ja niin edelleen) ylemmän tason käsittelijät. Ainoat poikkeukset ovat SSI-pyynnöt: kun ne saavuttavat mod_aclr2:n, se ohjaa ne oikeisiin käsittelijöihin. Jos pyyntö koskee staattista tiedostoa, mod_aclr2 etsii tiedostojärjestelmästä tiedoston tarkan sijainnin ja lähettää sijainnin nginxille.mod_rpaf tai mod_remoteip Apachen näkökulmasta kaikilla sen asiakkailla on sama IP-osoite, eli nginx-palvelimen osoite (katso yllä oleva kaavio). Tämä aiheuttaa ongelmia verkkosivustoille ja verkkosovelluksille, jotka käyttävät asiakkaiden IP-osoitteita todennukseen, tilastointiin ja niin edelleen. mod_rpaf (Apache 2.2:ssa) tai mod_remoteip (Apache 2.4:ssä) ratkaisee ongelman korvaamalla nginx-palvelimen IP-osoitteen kaikissa pyynnöissä asiakkaiden IP-osoitteilla. Tarkemmin sanottuna moduuli käyttää erityistä X-Forwarded-For-otsaketta, johon nginx lisää asiakkaan IP-osoitteen.
Tarkastellaan lähemmin, miten Plesk käsittelee staattisen ja dynaamisen sisällön pyyntöjä näiden moduulien avulla.
Staattisen tiedoston HTTP-pyynnön käsittely etenee seuraavasti (katso kaavio):
Asiakas lähettää pyynnön WWW-palvelimelle.
nginx lisää pyyntöön X-Accel-Internal-otsakkeen (jota mod_aclr2 käyttää) ja X-Forwarded-For-otsakkeen (joka sisältää asiakkaan IP-osoitteen) ja lähettää pyynnön Apachelle.
Apache vastaanottaa pyynnön ja alkaa käsitellä sen rekisteröityjen käsittelijöiden avulla (soveltaa
.htaccess-määritystä, kirjoittaa URL-osoitteen uudelleen ja niin edelleen). Tässä vaiheessa mod_rpaf korvaa nginx-palvelimen IP-osoitteen Apachen REMOTE_ADDR-muuttujassa asiakkaan osoitteella X-Forwarded-For-otsakkeesta.Kun kaikki rekisteröidyt käsittelijät ovat käsitelleet pyynnön, se saavuttaa mod_aclr2:n. Käsittelijä tarkistaa, onko X-Accel-Internal-otsake läsnä. Jos otsake on läsnä, moduuli lähettää nginxille vastauksen, jonka sisällön pituus on nolla, ja X-Accel-Redirect-otsakkeen. Tämä otsake sisältää tiedoston tarkan sijainnin, jonka mod_aclr2 on määrittänyt.
Kun nginx on vastaanottanut vastauksen, se paikantaa tiedoston ja toimittaa sen asiakkaalle.
Alla oleva kaavio on esimerkki siitä, miten Plesk käsittelee 2 KB:n GIF-tiedoston pyynnön.
Dynaamisen sisällön pyyntöjen käsittelyssä vaiheet 1–3 ovat samat. Sen jälkeen pyyntö siirtyy asianmukaisen Apache-moduulin (mod_php, mod_perl, mod_cgi ja niin edelleen) käsittelijälle. Pyyntö ei koskaan saavuta mod_aclr2:ta (SSI-pyyntöjä lukuun ottamatta). Käsittelijä luo vastauksen ja lähettää sen nginxille, joka puolestaan toimittaa vastauksen asiakkaalle. Alla oleva kaavio havainnollistaa, miten Plesk käsittelee PHP-tiedoston pyynnön.
Nginxin asentaminen¶
Jos teet Pleskin puhtaan asennuksen, nginx on oletuksena käytössä. Jos päivität aiemmista versioista, voit asentaa ”Nginx web server” -komponentin milloin tahansa päivityksen jälkeen kohdassa Työkalut ja asetukset > Päivitykset (”Plesk”-kohdassa) > Lisää/poista komponentteja. Kun komponentti on lisätty, käynnistä Reverse Proxy Server (nginx) -palvelu kohdassa Työkalut ja asetukset > Palveluiden hallinta (”Palvelimen hallinta”-kohdassa).
Voit tarkastella asennetun nginx-palvelimen versiota kohdassa Työkalut ja asetukset > Palvelinkomponentit (”Palvelimen hallinta”-kohdassa).
Nginxin poistaminen käytöstä¶
Palataksesi määritykseen, jossa on yksi Apache-WWW-palvelin, pysäytä Reverse Proxy Server (nginx) -palvelu kohdassa Työkalut ja asetukset > Palveluiden hallinta (”Palvelimen hallinta”-kohdassa).
Jotta nginx olisi jälleen etupään WWW-palvelin, käynnistä Reverse Proxy Server (nginx) -palvelu.
Muista
Reverse Proxy Server (nginx) -palvelun käynnistys- ja pysäytystoiminnot eivät ainoastaan käynnistä ja pysäytä nginxiä, vaan ne myös vaihtavat WWW-palvelimen määritystä (nginxin ja Apachen yhdistelmä tai pelkkä Apache etupään WWW-palvelimena). Käynnistä uudelleen -toiminto toimii samalla tavalla kuin kaikkien muiden palveluiden kohdalla: nginx-palvelu käynnistetään uudelleen.




