Nginx

Wikipediasta
Siirry navigaatioon Siirry hakuun
Nginx
Kehityshistoria
Vakaa versio 1.26.0 ()[1]
Tiedot
Ohjelmistotyyppi palvelinohjelmisto
Ohjelmointikielet C[2]
Lisenssi 2-lauseinen BSD-lisenssi
Aiheesta muualla
Verkkosivusto
Versiohallinta

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ä.[3] Nginx Plus puolestaan on OSS:lle perustuva maksullinen, tuettu ja ominaisuuksiltaan monipuolisempi versio. [4]

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

Kehitys[muokkaa | muokkaa wikitekstiä]

Nginxin kehityksessä tavoitteena oli parempi suorituskyky kuin Apachella.[6]

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.[3] Kehittäjät ovat saaneet tukea myös pääomasijoittajilta, kuten Michael Dellin MSD Capitalilta.[7]

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

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.[9]

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.[10] Nginx-palvelimesta on aiemmin tehty Angie-niminen forkki, jota kehittää venäläinen taho.[11]

Tekniikka[muokkaa | muokkaa wikitekstiä]

Nginx käyttää arkkitehtuurissaan tapahtumasilmukkaa (event loop) ja työläisprosesseja (worker process).[12] 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ä.[13]

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.[14] PHP FastCGI Process Managerin (PHP-FPM) avulla se keskustelee erillisen koko ajan käynnissä olevan PHP-FPM-prosessin kanssa Unix domain socketin kautta.[15][16]

Kilpailijat[muokkaa | muokkaa wikitekstiä]

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

Nginx korvasi Apachen OpenBSD:n versiossa 5.2[21] mutta sen korvasi OpenBSD:n oma httpd versiossa 5.7.[22]

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

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.[25]

Lähteet[muokkaa | muokkaa wikitekstiä]

  1. Changes with nginx 1.26.0, (viitattu ). Tieto on haettu Wikidatasta.
  2. http://freshcode.club/projects/nginx
  3. a b nginx nginx.org.
  4. NGINX Plus Nginx.
  5. Palvelintutkimus, elokuu 2019 Netcraft.
  6. Owen Garrett: NGINX vs. Apache: Our View of a Decade-Old Question nginx.com. 9.10.2015. Viitattu 28.9.2022. (englanniksi)
  7. Funding from BV Capital, Runa Capital, and MSD Capital Fuels NGINX’s Commercial Plans and New U.S. Presence Nginx.
  8. F5 Completes Acquisition of NGINX f5.com.
  9. Cops storm Nginx's Moscow offices after a Russian biz claims it owns world's most widely used web server, not F5 12.12.2019. The Register.
  10. https://www.phoronix.com/news/Nginx-Forked-To-Freenginx
  11. Liam Proven: Nginx web server forked as Freenginx to escape corporate overlords theregister.com. 16.2.2024. Viitattu 17.2.2024. (englanniksi)
  12. Mehul Mohan: Nginx Internals: An In-Depth Look at Connection Processing codedamn.com. 26.3.2023. Viitattu 13.3.2024. (englanniksi)
  13. Understanding NGINX solo.io. Viitattu 13.3.2024. (englanniksi)
  14. Justin Ellingwood: Understanding and Implementing FastCGI Proxying in Nginx digitalocean.com. 8.12.2014. Viitattu 14.3.2024. (englanniksi)
  15. https://www.techcoil.com/blog/configuring-nginx-for-php-web-applications/
  16. https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/
  17. Owen Garrett: NGINX vs. Apache: Our View of a Decade-Old Question nginx.com. 9.10.2015. Viitattu 17.2.2024. (englanniksi)
  18. Will Reese: Nginx: the High-Performance Web Server and Reverse Proxy linuxjournal.com. 1.9.2008. Viitattu 17.2.2024. (englanniksi)
  19. Apache httpd 2.4 people.apache.org.
  20. Picking a Proxy Server slideshare.net. 14 April 2014.
  21. Upgrade Guide: 5.1 to 5.2 openbsd.org. Viitattu 18.2.2024. (englanniksi)
  22. Upgrade Guide: 5.6 to 5.7 openbsd.org. Viitattu 18.2.2024. (englanniksi)
  23. Yuchen Wu & Andrew Hauck: How we built Pingora, the proxy that connects Cloudflare to the Internet blog.cloudflare.com. 14.9.2022. Viitattu 28.9.2022. (englanniksi)
  24. https://blog.cloudflare.com/pingora-open-source
  25. Alexey Ivanov & Oleg Guba: How we migrated Dropbox from Nginx to Envoy dropbox.tech. 30.7.2020. Viitattu 13.3.2024. (englanniksi)

Aiheesta muualla[muokkaa | muokkaa wikitekstiä]