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 stars Tracking Chart

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/

Overview

Name With Ownernginx/nginx
Primary LanguageC
Program languagePerl (Language Count: 7)
PlatformBSD, Linux, Mac, Solaris, Unix-like, Windows
License:
Release Count562
Last Release Namerelease-1.26.0 (Posted on )
First Release Namerelease-0.1.0 (Posted on )
Created At2015-06-23 10:26:27
Pushed At2024-04-23 14:42:07
Last Commit At2024-04-16 18:29:59
Stargazers Count20.2k
Watchers Count1k
Fork Count6.6k
Commits Count8.2k
Has Issues Enabled
Issues Count0
Issue Open Count0
Pull Requests Count0
Pull Requests Open Count0
Pull Requests Close Count91
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private
To the top