Nginx

Nginx (lausutaan kuten ”engine-x”) on WWW- ja proxy-palvelin, jota voi käyttää myös muun muassa reverse proxyna, load balancerina ja cachena.  Igor Sysojevin kehittämä ohjelmisto julkaistiin vuonna 2004, ja yritys Nginx Inc. perustettiin vuonna 2011.

Nginx OSS on avoimen lähdekoodin ohjelmisto, joka on julkaistu BSD-lisenssillä. Nginx Plus puolestaan on OSS:lle perustuva maksullinen, tuettu ja ominaisuuksiltaan monipuolisempi versio. 

Nginx kehitettiin alun perin hakukone ja verkkoportaali Rambler.ru:n palvelimeksi. Ensimmäinen versio julkaistiin syksyllä 2004. Myöhemmin sen ovat ottaneet käyttöön myös Yandex, Mail.Ru ja VK.
Kehittäjät ovat saaneet tukea myös pääomasijoittajilta, kuten Michael Dellin MSD Capitalilta.

Maaliskuussa 2019 F5 Networks ilmoitti ostavansa NGINX Inc.:in 670 miljoonalla dollarilla, ja yrityskauppa toteutui saman vuoden toukokuussa. 

Joulukuussa 2019 poliisi ratsasi Nginx:n Moskovan toimistot, koska Rambler Group katsoo ohjelmiston kuuluvan itselleen ja Nginx:n rikkovan yhtiön oikeuksia. Sysojev oli työssä Ramblerilla 2000-luvun alussa ja perusti oman yhtiönsä jätettyään Ramblerin.

Netcraft arvioi elokuussa 2019, että 32 % kaikista aktiivisista nettisivuista käyttää Nginxiä palvelimenaan. Nginxin ollessa suosituin palvelin Apache sijoittui toiselle sijalle 29 %:n suosiollaan. 

Nginxin kehityksessä tavoitteena oli parempi suorituskyky kuin Apachella. Cloudflare on kehittänyt Pingoran, jolla se on korvannut Nginxin saadakseen paremman suorituskyvyn.

Tekniikka

nginx perustuu reactor-suunnittelumalliin. Palvelimessa on yksi säie prosessoriydintä kohden. Tapahtumasilmukka (event loop) odottaa käyttöjärjestelmän viestiä ja lukee pistokkeesta (socket) dataa, joka käsitellään. nginx ei käytä fork() -systeemikutsua käynnistämään uusi palvelin pyynnön käsittelyyn, koska tällä on merkittävä context switch -overhead sekä suuri muistinkulutus, koska jokainen säie tai prosessi tarvitsee oman pinon.
Koska nginx ei forkkaa pyyntöä, se ei voi käsitellä esim. CGI-ohjelmia, joita varten käynnistetään erillinen ohjelma.

nginx tukee esim. PHP:ta PHP FastCGI Process Managerin (PHP-FPM) avulla, jolloin se keskustelee erillisen koko ajan käynnissä olevan PHP-FPM-prosessin kanssa Unix domain socketin kautta.

Lähteet

Aiheesta muualla 
 Virallinen sivusto
 Nginx, Inc.

Palvelinsovellukset
Vapaat ohjelmistot