이 문서는 r20240101판에서 저장되지 않은 문서입니다.
자동으로 r20180326판 문서를 읽어왔습니다.
자동으로 r20180326판 문서를 읽어왔습니다.
Nginx
덤프버전 : r20180326
NGiИX™
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에서 사용하는 요청 당 스레드 혹은 프로세스 기반의 구조 대신 비동기 이벤트 기반의 구조로 작동한다. 이로 인해서 서버 부하시 성능 예측이 쉽다. 덤으로 10,000개의 동시 접속을 하면 그 10000개에 드는 메모리 점유는 평균 2.5MB다.(...) 리눅스 기반으로 구축하는 웹 서버의 경우 기존의 LAMP(Linux + Apache + MySQL + PHP or Python or Perl
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. 사용 사이트[편집]
가나다 순이다.
- 나무위키[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를 사용한다.
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] [12] Frontend로 Nginx를 사용하는 듯하다. Backend는 Node.js의 Express 프레임워크이다.[13] [14] [15] [16] [17]
하단 nginx에 주목.[18] [19] 온라인 에디터에서 undefined 블록의 설명을 보려면 400 오류 화면 밑에 'nginx'라 나온다. 사진 추가 바람.
하단 nginx에 주목.[18] [19] 온라인 에디터에서 undefined 블록의 설명을 보려면 400 오류 화면 밑에 'nginx'라 나온다. 사진 추가 바람.