<colbgcolor=#309421><colcolor=#ffffff> 개발사 | NGINX, Inc(미국 샌프란시스코) |
모기업 | F5, Inc(미국 시애틀) |
최초 버전 | 2004년 10월 4일 |
종류 | 웹 서버, 리버스 프록시 서버 |
작성 언어 | C |
라이선스 | NGINX: BSD 2-Clause(무료) NGINX Plus: 상용 라이선스(유료) |
링크 | | | 소스코드 |
[clearfix]
1. 개요
가벼우면서도 강력한 프로그램을 목표로 원래는 러시아에서 개발되었지만 2020년대 이후 현재는 미국에서 운영 중인 오픈 소스 웹 서버 프로그램이다. '엔진엑스'라고 읽는다. HTTP와 리버스 프록시, IMAP/POP3 등의 서버 구동이 가능하다. Java 서블릿은 대개 Apache의 Tomcat을 연동해서 구동하고, PHP의 경우 PHP-FPM(FastCGI Process Manager)을 연동해서 구동한다.2. 역사
2002년에 러시아의 프로그래머 이고르 시쇼브(Igor Sysoev)가 Apache HTTPd를 코딩하다 Apache의 C10K 문제[1]를 보고, 이를 해결하기 위해서 네이티브 Win32 환경에도 돌아갈 무설치 웹 서버 데몬 프로그램을 개발하기 시작하여 2004년 10월 4일에 버전 0.1.0을 오픈 소스로 공개했다.[2] 2011년에는 이고르 시쇼브와 막심 코노발로프(Maxim Konovalov)가 공동으로 NGINX, Inc를 설립하여[3] 기업 시장 공략과 소프트웨어 지원을 강화했다. 2019년 3월에 미국의 F5 Inc가 NGINX, Inc를 6억 7천만 달러에 인수했다.[4]2019년 12월에 모스크바의 NGINX 사무실이 압수 수색을 당하는 일이 발생했다.[5] 창립자 이고르 시쇼브가 NGINX 개발 초창기에 재직했던 Rambler[6]라는 회사가 NGINX에 대한 저작권을 주장하고 나섰기 때문이다. 회사 업무와는 무관하게 NGINX를 개발했으나[7], Rambler는 임직원이 개발한 것이므로 자사에 저작권이 있다고 주장했다. 그 이후, Rambler의 소유주 스베르방크와 NGINX의 인수자 F5가 협상했으나 결과는 공개되지 않았다.[8] 창립자 이고르 시쇼브는 2022년 1월에 NGINX와 F5를 떠나 은퇴했다.[9]
미국 F5가 인수한 이후에도 잔존했던 러시아 개발진을 주축으로 개발이 이어졌으나, 우크라이나 전쟁을 계기로 러시아 보이콧 분위기 및 사이버 보안 우려가 커지자, 2022년 4월을 기해 러시아 사무실을 폐쇄하고 미국에서 개발 및 관리하는 것으로 개편되었다.[10]
Apache HTTPd보다 역사가 오래되지는 않았으나, Apache HTTPd가 많은 한계를 보이고 있는 상황에서, NGINX는 가볍고 높은 성능을 무기로 점유율을 빠르게 늘려나가 현재는 웹 서버 시장 점유율 1위가 되었다. 2023년 7월 기준으로 웹 서버 소프트웨어 순위는 엔진엑스(34.3%), 아파치 HTTP 서버(31.4%), LiteSpeed(12.2%), MS IIS(5.4%) 순이다.[11] 클라우드플레어는 20.6%이지만 CDN에 사용되는 것이기 때문에 배후에 있는 실제 웹 서버는 NGINX, Apache, LiteSpeed인 경우가 대부분이다.
기존에 Apache HTTPd로 서비스하는 곳들도 점차 NGINX로 갈아타는 추세이다. 마이크로소프트 진영에서는 GUI 를 통해 관리할 수 있는 IIS를 사용하는 경우도 많지만, 도입 환경 및 연계될 시스템과의 문제라서 1:1 비교는 힘들며, 마이크로소프트 ASP.NET Core 버전에서는 리눅스를 지원하므로 리눅스에서 사용할 수 없는 IIS를 대신하여, ASP.NET에 내장된 Kestrel WAS와 연계하여 NGINX를 리버스 프록시 서버로 사용하는 케이스가 많다.
3. 라이선스
NGINX의 라이선스는 BSD 2-Clause 라이선스를 사용하는데, 'Simplified BSD 라이선스' 또는 'FreeBSD 라이선스'라고 부르기도 한다. 즉, 원저작자를 밝히고 원래 라이선스를 그대로 유지하는 조건만 갖추면, 자유롭게 수정 및 재배포가 가능하다. GPL과는 달리 수정된 소스를 공개하거나 소스 코드를 제공해야 할 의무도 없는 더 자유로운 라이선스이다.NGINX Plus는 상용 라이선스이며 유료이다. 사용료는 Standard 기준으로 연간 $2,500~$3,500 정도하는 것으로 알려져 있다.
4. 기능
NGINX는 HTTP와 HTTP/2 및 HTTP/3를 지원한다. 2023년 5월, 메인스트림[12] 버전인 1.25.0 버전부터 HTTP/3를 공식 지원 하기 시작했다[13][14].구조적으로는 Apache HTTPd에서 사용하는 요청당 스레드 혹은 프로세스 기반의 구조 대신, 비동기 이벤트 기반의 구조로 작동한다. 이로 인해서 서버 부하 시 성능 예측이 쉽다. 덤으로 10,000개의 동시 접속을 하면, 그 10,000개에 드는 메모리 점유는 평균 2.5MB다. 리눅스 기반으로 구축하는 웹 서버의 경우, 기존의 LAMP(Linux + Apache + MySQL/MariaDB + PHP/Python/Perl)에서 Apache 대신 (E)NGINX로 대체된 LEMP를 쓴다. NGINX는 여러 서드 파티 기능[15]을 모듈로 쓰고 있으며, 그래서 필요하지 않을 경우 모듈을 제외해 놓을 수 있다, 단, 완성된 바이너리를 사용하지 않고 소스를 컴파일해서 사용할 때는, 사용할 모듈을 컴파일할 당시에 추가하지 않으면 그 이후에 추가할 수는 없다.
아파치처럼 NGINX도 사용할 때 환경 설정을 바꾸고 나서 서버 데몬을 재시작할 필요 없이 reload 시그널을 보내면 된다. 즉, 프로세스를 재시작할 필요가 없다는 장점이 있다. 물론 Apache도 httpd 명령어에 graceful 기능이 있다.
NGINX 유닛이라는 마이크로서비스용 앱 서버를 내놨는데, 정적인 설정 파일이 아니라서 설정을 고치는 중에도 서비스 운영에 방해가 없다고 한다. NGINX Releases Open Source Web Server with Dynamic Configuration (May 04, 2018)
5. 적용 확인법
웹사이트가 어떤 웹 서버 프로그램을 사용하는지 확인하려면 HTTP 응답 헤더의 server 항목을 보면 된다. 다만, 일부 CDN(클라우드프론트처럼 원본 서버의 server 헤더를 그대로 전송하는 경우도 있다.)을 사용하는 경우에는 CDN 측에서 사용하는 서버로 표시되기 때문에 배후에 있는 실제 서버의 종류는 알 수 없다. 또한, 보안을 위하여 웹 서버 프로그램의 버전은 물론이고 종류도 공개되지 않도록 설정하는 경우도 많다. 웹 서버 프로그램의 종류와 버전을 알면 그에 특화된 공격이 용이해지기 때문이다.웹 서버 프로그램의 종류를 공개하지 않거나 CDN으로 가린 경우에도 특별한 방법을 써서 확인할 수 있는 경우도 있다. 예를 들면, 나무위키는 CDN을 사용하기 때문에 실제로 어떤 웹 서버를 사용하는지 알 수 없다. 그런데 나무위키 검색창에 원주율을 소수 1만 자리까지 쳐 보면 nginx Too Large 오류가 뜬다. 즉, CDN 뒤쪽의 실제 웹 서버는 NGINX를 사용하고 있다는 뜻이다. 그리고 나무위키는 주소의 길이가 7,475자를 넘기면 HTTP ERROR 431 오류를, 8,195자를 넘기면 414 Request-URI Too Large 오류가 뜬다.
6. 기타
크래쉬 밴디쿳 시리즈에 등장하는 N 자 돌림 빌런들 간부 중 N.Gin이 있으나 이것과는 무관하다. 아니, 이 캐릭터가 NGINX보다 훨씬 먼저 나왔다.[1] 10,000개 이상의 소켓을 열면, 하드웨어 성능이 충분함에도 불구하고 I/O 처리 방식의 문제 때문에 프로세스가 제대로 처리하지 못하는 것.[2] NGINX 버전 역사[3] 개발은 러시아에서 하고 있었으나 NGINX, Inc는 글로벌 시장 공략을 위해 미국 샌프란시스코에 등록했다.[4] 미국 F5 Inc가 NGINX 인수. 인수회사 이름이 F5 Networks, Inc 였으나 2022년에 사명을 F5, Inc로 변경했다.[5] NGINX 모스크바 사무실 압수 수색, ZDNet, 2019년 12월 17일.[6] Rambler는 러시아 인터넷 포털 회사이다. 한국으로 치면 카카오나 네이버와 같은 존재이다.[7] 이고르 시쇼브 인터뷰, 2012년. "회사 업무와는 무관하게 여가 시간에 개발했고, Rambler는 한동안 이 사실을 몰랐다."[8] 보통 이런 합의를 할때는 NDA(Non-disclosure agreement; 비밀 유지 협약)를 맺는다.[9] NGINX 창립자 은퇴, nginx.com, 2022년 1월 18일[10] NGINX와 러시아의 단절, F5 Inc 발표문, 2022년 4월 28일.[11] 세계 웹 서버 시장 점유율, W3Tech[12] NGINX에서는 개발 버전을 mainstream, 안정화 버전을 stable이라고 부른다. 개발 버전은 홀수, 안정화 버전은 짝수 번호이다다.[13] NGINX의 HTTP/3 데모 사이트[14] HTTP/3용 NGINX의 바이너리 파일 설치 방법[15] TLS, GeoIP 등