Nginx

덤프버전 : r20180326

파일:attachment/Nginx/nginx.gif


NGiИX™

1. 개요
2. 사용 사이트


1. 개요[편집]


2002년부터 러시아프로그래머 이고르 시쇼브(Игорь Сысоев)가 Apache HTTPd를 코딩하다 Apache의 C10K 문제[1]를 보고, 이를 극복하기 위해서 네이티브 Win32 환경에도 돌아갈 무설치 웹 서버 데몬 프로그램에 대한 개발을 시작하여 2004년 스푸트니크 1호 발사일에 발표한 오픈 소스 웹 서버 프로그램. 현재 이고르 시쇼브와 그가 설립한 회사인 Nginx Inc.가 이 프로젝트를 운영중에 있다. 목표는 가벼우면서도 강력한 프로그램이라고 한다. HTTP와 리버스 프록시, IMAP/POP3 등의 서버를 구동 가능하다. Java 서블릿은 대개 Apache의 톰캣을 연동해서 구동하고, PHP의 경우 PHP-FPM(FastCGI Process Manager)을 연동해서 구동한다.

읽을 때는 '엔진엑스'라고 읽는다. 닝스라고 읽어왔다면 고치자 아직 역사가 그리 오래되지 않아서 점유율 면에선 Apache HTTPd에게 많이 밀린다. 하지만 신규 서비스를 중심으로 점유율 상승에 가속이 붙는 중이며, 이미 Apache HTTPd가 많은 한계를 많이 보이고 있으므로 특별한 사유가 없다면 Nginx로 갈아타는 추세다. 확장 모듈이 Apache HTTPd보다 부족한 게 흠인데, 어차피 Apache HTTPd의 많은 확장 모듈을 제대로 쓰는 사람은 드물다. 오히려 쓰지도 않으면서 괜히 리소스만 낭비하는 모듈이 대부분이다.[2] 따라서 호환성 확인 후 별다른 문제가 없다면 Nginx로 갈아타는 것이 현추세. 이미 Apache HTTPd에서 많이 사용하는 필수적인 모듈은 Nginx에도 존재하고 일부 모듈은 Apache HTTPd의 것보다 수십배 이상 빠르다. 마이크로소프트 진영에서는 GUI 제공으로 인해 관리가 쉬운 인터넷 정보 서비스에 밀리지만, 이쪽은 취향과 돈의 문제[3]라서 1:1 비교가 힘들다.

구조적으로는 Apache HTTPd에서 사용하는 요청 당 스레드 혹은 프로세스 기반의 구조 대신 비동기 이벤트 기반의 구조로 작동한다. 이로 인해서 서버 부하시 성능 예측이 쉽다. 덤으로 10,000개의 동시 접속을 하면 그 10000개에 드는 메모리 점유는 평균 2.5MB다.(...) 리눅스 기반으로 구축하는 웹 서버의 경우 기존의 LAMP(Linux + Apache + MySQL + PHP or Python or Perl 세상에 아직도 펄을 쓴단 말이야?)에서 Apache 대신 (E)Nginx로 대체된 LEMP를 쓴다. Nginx는 여러 서드파티 기능[4]을 모듈로 쓰고 있으며, 그래서 필요하지 않을 경우 모듈을 제외해 놓을 수 있다, 단, 완성된 바이너리를 사용하지 않고 소스를 컴파일해서 사용할 때 처음부터 사용할 모듈을 추가하지 않으면 그 이후에 추가가 안되는 건 함정.

Nginx는 현재 HTTP/2를 발빠르게 지원하려고 하고 있다. HTTP/2 보급화를 계기로 콩라인 등극을 목표로 하는 듯하다. 그 전까지 이 분야의 콩라인 주자는 마이크로소프트의 인터넷 정보 서비스.

단, 위의 장점들은 전적으로 리눅스용 버전에만 해당된다. 윈도우용 Nginx는 아직도 불완전한 버전이라서 본래의 성능이나 확장성을 발휘하지 못하며 UDP 관련 기능도 지원하지 않는다.[5] 향후 윈도우용 버전을 개선하겠다는 약속은 있으나 몇년이 지나도 그대로라 사용자들도 반쯤 포기 상태이다. 따라서 간이용으로 사용한다면야 상관없겠지만, 윈도우 환경에서 본격적인 서버를 운영하려면 아직까진 윈도우 서버를 구입해서 IIS를 사용할 수밖에 없다.[6]

Nginx를 사용할 때 환경 설정[7]을 바꾸고 나서 서버 데몬을 재시작할 필요 없이 reload 시그널을 보내면 된다. 즉, 프로세스를 재시작할 필요가 없다는 장점이 있다.

2017년 10월 기준으로 실질적으로 작동하는 웹 사이트(active site)들에서 쓰이는 웹 서버 소프트웨어 순위는 아파치 HTTP 서버(44.89%), 엔진엑스(20.65%), 구글 웹 서버(7.86%), 마이크로소프트 IIS(7.32%) 순이다.[8] 이 조사에서 생성은 되어있으나 정상적으로 작동하지 않는 웹 사이트들은 배제되었으며[9] 특히 MS의 인터넷 정보 서비스(IIS)를 설치한 웹 사이트들의 상당수가 비활성 사이트였다. 그런 사이트들도 포함하면 MS IIS가 1위이다.


2. 사용 사이트[편집]


가나다 순이다. 각주에 있는 것들이 죄다 HTTP 오류 페이지인 건 함정[10]
  • 나무위키[11][12]
  • 네이버 첫 페이지, 이 밖에는 Apache HTTPd를 사용한다.
  • 넷플릭스
  • 디시인사이드[13]
  • 루리웹[14]
  • 리브레 위키
  • 미러(웹사이트)
  • 백괴사전[15]
  • 세이브일베
  • 오리위키
  • 오픈위키
  • 일베저장소
  • 청와대[16]
  • 카카오 사이트 (공지사항 서버[17], 카카오톡 PC 버전 등)
  • 키위위키
  • 페이스북
  • Hostinger.kr[18]
  • G마켓
  • GitHub
  • SoundCloud
  • Sourceforge
  • translatewiki.net
  • 워드프레스닷컴
  • XpressEngine 공식 사이트
  • Zynga
  • 와이고수
  • 스크래치 공식 사이트[19]

Cloudflare에서는 NGiИX를 변형한 Cloudflare-NginX를 사용한다.

파일:external/ivandarmawan.files.wordpress.com/nginxwelcome.jpg
Nginx를 처음 깔면 환영 문구가 나오는데, 구식버전에서는 그냥 빈 화면에 Welcome to Nginx만 뜨고 땡이다. 근데 문제는 몇몇 악성코드들이 컴퓨터를 감염시켜 로컬 DNS를 변경, 사이트를 변경시키는데 하필이면 저 화면만 뜨는 서버로 이동시킨다는 것. 덕택에 Nginx도 악성코드 취급을 받아, 현재는 설치 후 기본 페이지를 저렇게 변경해놨다.


[1] 10,000개 이상의 소켓을 열게 된다면 하드웨어 성능이 충분함에도 불구하고 I/O 처리 방식의 문제 때문에 프로세스가 제대로 처리하지 못하는 것.[2] 사용자가 주어진 모듈이 어떤 기능을 하는지 다 알지 못하기 때문이다.[3] 경영진의 의지[4] TLS, GeoIP 등[5] 참고 http://nginx.org/en/docs/windows.html[6] Apache HTTPd도 윈도우 버전은 리눅스 버전에 비해 썩 좋지 않다.[7] Apache HTTPd의 vhost는 '서버 블록'으로 불리며, 정 귀찮으면 메인 설정 파일인 nginx.conf에 필요한 설정을 쏟아 넣으면 돌아가기는 한다. 물론 이러면 문제 생겼을 때 죽어나가는건 바로 당신.[8] https://news.netcraft.com/archives/2017/10/26/october-2017-web-server-survey-13.html[9] https://www.netcraft.com/active-sites/[10] 실제로 확인해보려면 HTTP 헤더의 Server 항목을 보면 된다.[11] 파일:nginxnamu.png[12] Frontend로 Nginx를 사용하는 듯하다. Backend는 Node.js의 Express 프레임워크이다.[13] 파일:dcinside-nginx.png[14] 파일:Cap 2016-10-21 15-10-04-272.jpg[15] 파일:백괴사전_502_nginx.png [16] 파일:2018-02-21.png [17] 파일:attachment/Nginx/1386549615670_Screenshot_2013-12-09-09-29-00.png
하단 nginx에 주목.
[18] 파일:external/ghostcloud.96.lt/7288f503dafbc6c760dc508c2da6014b.png[19] 온라인 에디터에서 undefined 블록의 설명을 보려면 400 오류 화면 밑에 'nginx'라 나온다. 사진 추가 바람.