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. 

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

## Kehitys
Nginxin kehityksessä tavoitteena oli parempi suorituskyky kuin Apachella.

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.

F5 sulki toimistonsa Moskovassa 2022. Venäläiset kehittäjät jäivät kehittämään ohjelmistoa vapaaehtoispohjalta. Myöhemmin F5 teki kyseenalaisia muutoksia palvelimeen. Maksim Dounin päätti forkata projektin ja alkoi kehittää uutta Freenginx-versiota.
Nginx-palvelimesta on aiemmin tehty Angie-niminen forkki, jota kehittää venäläinen taho.

## Tekniikka
Nginx käyttää arkkitehtuurissaan tapahtumasilmukkaa (*event loop*) ja työläisprosesseja (*worker process*). Pääprosessi tekee tehtäviä kuten lukee konfiguraation, sitoo portteihin ja käynnistää työläisprosesseja. Työläiset käsittelevät yhteyksiä, lukevat ja kirjoittavat tietoja, ja kommunikoivat muiden palvelimien kanssa. Työläisprosessit ovat yksisäikeisiä. Jokainen työläisprosessi käsittelee useita yhteyksiä. 

Nginx on pääasiallisesti välityspalvelin, mutta CGI suoritus on mahdollista FastCGI:n avulla. Toisin kuin Apache, joka tukee PHP:ta `mod_php`-moduulin avulla Nginx tarvitsee erillisen PHP-tulkin, joka on yleensä `php-fpm`. PHP FastCGI Process Managerin (PHP-FPM) avulla se keskustelee erillisen koko ajan käynnissä olevan PHP-FPM-prosessin kanssa Unix domain socketin kautta.

## Kilpailijat
Nginx kehitettiin korvaamaan Apache-palvelin ja tarkoitus oli parempi suurien määrien yhtäaikaisien pyyntöjen käsittely. Vuonna 2012 julkaistu Apachen 2.4 -versio kuitenkin kuroi umpeen Nginxin etumatkan suorituskyvyssä, ja Nginxin ja Apachen suorituskyky ovat samankaltaiset.

F5 Networksiltä lähteneet kehittäjät forkkasivat Nginx:stä ohjelmiston nimellä Angie aikomuksena tukea Venäjällä olevia käyttäjiä.

Nginx korvasi Apachen OpenBSD:n versiossa 5.2 mutta sen korvasi OpenBSD:n oma httpd versiossa 5.7.

Cloudflare on kehittänyt Rust-kielellä kirjoitetun Pingoran, jolla se on korvannut Nginxin saadakseen paremman suorituskyvyn. Pingora on avointa lähdekoodia vuodesta 2024 alkaen.

Dropbox-yhtiö siirtyi Nginx:stä Envoy-palvelimelle. Myös Envoyn arkkitehtuuri on tapahtumapohjainen kuten Nginx:n, mutta Envoy on monisäikeinen. Myös tapahtumakäsittelyssä on eroja ja Envoy ei pysähdy odottamaan samoin.

## Lähteet

## Aiheesta muualla
* Virallinen sivusto
* Nginx, Inc.