nginx

nginx [engine x]是一个HTTP和反向代理服务器、一个邮件代理服务器和一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写。(nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, originally written by Igor Sysoev.)

Github星跟蹤圖

nginx [engine x]是一个HTTP和反向代理服务器、一个邮件代理服务器和一个通用的TCP/UDP代理服务器,最初由Igor Sysoev编写。 很长一段时间,它一直在许多负载很重的俄罗斯网站上运行,包括Yandex,Mail.Ru,VK和Rambler。 据Netcraft称,nginx在2018年12月服务或代理了25.89%最繁忙的网站。以下是一些成功案例:Dropbox,Netflix,Wordpress.com,FastMail.FM。

源和文档根据2条款BSD类许可证分发。

Nginx, Inc. 提供商业支持。

基本的HTTP服务器功能

  • 提供静态和索引文件,自动索引;打开文件描述符缓存;
  • 通过缓存加速反向代理;负载均衡和容错;
  • 通过缓存FastCGI,uwsgi,SCGI和memcached服务器加速支持;负载均衡和容错;
  • 模块化架构。过滤器包括gzipping,字节范围,分块响应,XSLT,SSI和图像变换过滤器。如果由代理或FastCGI / uwsgi / SCGI服务器处理,则可以并行处理单个页面中的多个SSI包含;
  • SSL和TLS SNI支持;
  • 支持HTTP / 2,具有加权和基于依赖性的优先级。

其他HTTP服务器功能

  • 基于名称和基于IP的虚拟服务器;
  • 保持活跃和流水线连接支持;
  • 访问日志格式,缓冲日志写入,快速日志轮换和syslog日志记录;
  • 3xx-5xx错误代码重定向;
  • 重写模块:使用正则表达式更改URI;
  • 根据客户端地址执行不同的功能;
  • 基于客户端IP地址,密码(HTTP基本身份验证)和子请求结果的访问控制;
  • 验证HTTP referer;
  • PUT,DELETE,MKCOL,COPY和MOVE方法;
  • FLV和MP4流媒体;
  • 响应速度限制;
  • 限制来自一个地址的同时连接或请求的数量;
  • 基于IP的地理定位;
  • A / B测试;
  • 请求镜像;
  • 嵌入式Perl;
  • njs脚本语言。

邮件代理服务器功能

  • 用户使用外部HTTP身份验证服务器重定向到IMAP或POP3服务器;
  • 使用外部HTTP身份验证服务器进行用户身份验证,并将连接重定向到内部SMTP服务器;
  • 验证方法:
  • POP3:USER / PASS,APOP,AUTH LOGIN / PLAIN / CRAM-MD5;
  • IMAP:登录,AUTH LOGIN / PLAIN / CRAM-MD5;
  • SMTP:AUTH LOGIN / PLAIN / CRAM-MD5;
  • SSL支持;
  • STARTTLS和STLS支持。

TCP/UDP代理服务器功能

  • TCP和UDP的通用代理;
  • SSL和TLS SNI支持TCP;
  • 负载均衡和容错;
  • 基于客户端地址的访问控制;
  • 根据客户端地址执行不同的功能;
  • 限制来自一个地址的同时连接数;
  • 访问日志格式,缓冲日志写入,快速日志轮换和syslog日志记录;
  • 基于IP的地理定位;
  • A/B测试;
  • njs脚本语言。

架构和可扩展性

  • 一个主要和几个工人流程;工作进程在非特权用户下运行;
  • 配置灵活;
  • 在不中断客户端服务的情况下重新配置和升级可执行文件;
  • 支持kqueue(FreeBSD 4.1+),epoll(Linux 2.6+),/ dev / poll(Solaris 7 11/99 +),事件端口(Solaris 10),select和poll;
  • 支持各种kqueue功能,包括EV_CLEAR,EV_DISABLE(暂时禁用事件),NOTE_LOWAT,EV_EOF,可用数据的数量,错误代码;
  • 支持各种epoll功能,包括EPOLLRDHUP(Linux 2.6.17 +,glibc 2.8+)和EPOLLEXCLUSIVE(Linux 4.5 +,glibc 2.24+);
  • sendfile(FreeBSD 3.1 +,Linux 2.2 +,macOS 10.5+),sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01 +)支持;
  • 文件AIO(FreeBSD 4.3 +,Linux 2.6.22+);
  • DIRECTIO(FreeBSD 4.4 +,Linux 2.4 +,Solaris 2.6 +,macOS);
  • Accept-filters(FreeBSD 4.1 +,NetBSD 5.0+)和TCP_DEFER_ACCEPT(Linux 2.4+)支持;
  • 10,000个非活动HTTP保持活动连接占用大约2.5M内存;
  • 数据复制操作保持在最低限度。

经测试的操作系统和平台

  • FreeBSD 3 — 11 / i386; FreeBSD 5 — 11 / amd64;
  • Linux 2.2 — 4 / i386; Linux 2.6 — 4 / amd64; Linux 3 — 4 / armv6l, armv7l, aarch64, ppc64le;
  • Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
  • AIX 7.1 / powerpc;
  • HP-UX 11.31 / ia64;
  • macOS / ppc, i386;
  • Windows XP, Windows Server 2003.

注:仓库是 http://hg.nginx.org/nginx/ 的官方只读镜像,每小时更新一次。 GitHub上的拉取请求无法接受,将自动关闭。 向nginx提交更改的正确方法是通过nginx开发邮件列表,请参阅http://nginx.org/en/docs/contributing_changes.html http://nginx.org/

概覽

名稱與所有者nginx/nginx
主編程語言C
編程語言Perl (語言數: 7)
平台BSD, Linux, Mac, Solaris, Unix-like, Windows
許可證
發布數562
最新版本名稱release-1.26.0 (發布於 )
第一版名稱release-0.1.0 (發布於 )
創建於2015-06-23 10:26:27
推送於2024-05-03 16:34:07
最后一次提交2024-05-03 20:26:05
星數20.3k
關注者數1k
派生數6.6k
提交數8.2k
已啟用問題?
問題數0
打開的問題數0
拉請求數0
打開的拉請求數0
關閉的拉請求數91
已啟用Wiki?
已存檔?
是復刻?
已鎖定?
是鏡像?
是私有?
去到頂部