什麼是Nginx
什麼是Nginx
Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。Nginx 可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等作業系統中執行。Nginx開發團隊於 2012年7月3日 釋出了最新的 Nginx 1.2.2穩定版本。
Nginx 官方主頁:http://nginx.org/
從2004開始,Nginx 已經在眾多流量很大的俄羅斯網站上使用,包括Yandex、Mail.Ru、VKontakte,以及Rambler。
目前中國大陸使用nginx網站使用者有:新浪、網易、 騰訊,另外知名的微網誌Plurk也使用nginx。
據Netcraft統計,截止2012年7月份,世界上最繁忙的網站中有11.09% 使用Nginx作為其伺服器或者代理伺服器。
特點
Nginx相較於Apache、lighttpd具有佔有記憶體少,穩定性高等優勢,並且依靠併發能力強,豐富的模組庫以及友好靈活的配置而聞名。 在Linux作業系統下,nginx使用epoll事件模型,得益於此,nginx在Linux作業系統下效率相當高。同時Nginx在OpenBSD或FreeBSD作業系統上採用類似於epoll的高效事件模型kqueue。
Nginx效能概述
基本的HTTP伺服器特性
- 處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符快取;
- 使用快取加速反向代理;簡單負載均衡以及容錯;
- 遠端FastCGI服務的快取加速支援;簡單的負載均衡以及容錯;
- 模組化的架構。過濾器包括gzip壓縮、ranges支援、chunked響應、XSLT,SSI以及影像縮放。在SSI 過濾器中,一個包含多個SSI的頁面,如果經由FastCGI或反向代理處理,可被並行處理;
- 支援SSL,TLS SNI。
其他的HTTP伺服器特性
- 基於名字和IP的虛擬主機;
- Keep-alive和pipelined連線支援;
- 靈活的配置;
- 重新載入配置以及線上升級時,不需要中斷正在處理的請求;
- 自定義訪問日誌格式,帶快取的日誌寫操作以及快速日誌輪轉;
- 3xx-5xx錯誤程式碼重定向;
- 重寫(rewrite)模組;
- 基於客戶端IP地址和HTTP基本認證機制的訪問控制;
- 支援PUT、DELETE、MKCOL、COPY以及MOVE方法;
- 支援FLV流和MP4流;
- 速度限制;
- 來自同一地址的同時連線數或請求數限制;
- 嵌入Perl語言。
郵件代理伺服器特性
- 使用外部HTTP認證伺服器重定向使用者到IMAP/POP3後端;
- 使用外部HTTP認證伺服器認證使用者後重定向連線到內部SMTP後端;
-
支援的認證方式:
- POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
- IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
- SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
- SSL支援;
- STARTTLS和STLS支援。
架構和擴充套件性
- 一個主程式和多個工作程式,工作程式以非特權使用者執行;
- 支援的事件機制:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux 2.2.19+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select以及poll;
- 眾多支援的kqueue特性包括EV_CLEAR、EV_DISABLE(臨時禁止事件)、NOTE_LOWAT、EV_EOF,可用資料的數量,錯誤程式碼;
- 支援sendfile(FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5)、sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01+);
- 檔案AIO(FreeBSD 4.3+, Linux 2.6.22+);
- Accept-filters(FreeBSD 4.1+)和 TCP_DEFER_ACCEPT(Linux 2.4+);
- 10000個非活躍的HTTP keep-alive連線僅佔用約2.5M記憶體;
- 儘可能避免資料拷貝操作。
測試過的作業系統和平臺
- FreeBSD 3 — 8 / i386; FreeBSD 5 — 9 / amd64;
- Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
- Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
- MacOS X / ppc, i386;
- Windows XP, Windows Server 2003.
相關文章
- 什麼是 Nginx?Nginx
- Nginx之(一)Nginx是什麼Nginx
- 什麼是Nginx?Linux為什麼使用Nginx?NginxLinux
- nginx 是什麼,能幹什麼?Nginx
- Nginx 常用面試題-什麼是NginxNginx面試題
- 恆訊科技分析:Nginx是什麼意思?Nginx作為反向代理伺服器有什麼作用?Nginx伺服器
- Nginx 高階篇(二)什麼是負載均衡Nginx負載
- 我眼中的 Nginx(四):是什麼讓你的 Nginx 服務退出這麼慢?Nginx
- Nginx能做什麼Nginx
- 什麼是cookie,什麼是sessionCookieSession
- 什麼是DNS,什麼是HostsDNS
- 什麼是模式? 什麼是框架?模式框架
- 這是什麼這是什麼
- Nginx 為什麼這麼快?Nginx
- 什麼是IO多路複用?Nginx的處理機制Nginx
- 什麼是WebAuthn、FIDO 是什麼?Web
- ITIL是什麼意思?ITIL是什麼?
- 什麼是跨域,什麼是同源跨域
- 在Linux中,tomcat和nginx的區別是什麼?LinuxTomcatNginx
- 什麼是.NET平臺、什麼是c#、什麼是ASP.NET。C#ASP.NET
- ftp是什麼,ftp是什麼東西?FTP
- Java是什麼_Java是做什麼的?Java
- 什麼是正向代理?什麼是反向代理?
- NLA是什麼?NLA的原理是什麼?
- ###什麼是Linux核心###什麼是MMULinux
- 為什麼要有 Servlet ,什麼是 Servlet 容器,什麼是 Web 容器?ServletWeb
- 為什麼 APISIX Ingress 是比 Ingress NGINX 更好的選擇?APINginx
- 什麼是塊元素?什麼是行內元素?
- 什麼是API介面,具體是什麼意思?API
- 什麼是框架?為什麼說 Angular 是框架?框架Angular
- 什麼是Unicode,什麼是UTF-8Unicode
- 什麼是藍海?什麼是紅海?什麼是網際網路思維?
- 什麼是Django?有什麼用途?Django
- AI三重問:什麼是AI?什麼是AI模型?什麼是AI大模型?AI大模型
- 什麼是重繪repaint?什麼是迴流reflow?AI
- DHCP是什麼?DHCP伺服器是什麼意思?伺服器
- 什麼是CDN?CDN的技術原理是什麼?
- 交換機是什麼,它的工作原理是什麼