高性能的 HTTP 和 反向代理服务器 Nginx

1
Perl Scala Nginx C/C++ Go 22170 次浏览

Nginx

("engine x") 是一个高性能的 HTTP 和 反向代理服务器,也是一个IMAP/POP3/SMTP 代理服务器。 Nginx 是由Igor Sysoev为俄罗斯访问量第二的 Rambler.ru 站点开发的,它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

Best of open source enterprise software(荣获InfoWorld 2009年最佳开源平台和中间件奖)

高性能的 HTTP 和 反向代理服务器 NginxInfoWorld's 2009 Bossie Awards

  Nginx 是一个很牛的高性能Web和反向代理服务器, 它具有有很多非常优越的特性:

  在高连接并发的情况下,Nginx是Apache服务器不错的替代品: Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢Nginx为我们选择了 epoll and kqueue作为开发模型.

  Nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理服务器对外进行服务. Nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.

  作为邮件代理服务器: Nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验.

  Nginx 是一个 安装非常的简单 , 配置文件 非常简洁(还能够支持perl语法), Bugs非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动. 你还能够 不间断服务的情况下进行软件版本的升级.

  查看Nginx更多的特性: Feature Overview

  ==Nginx概述 ==

  HTTP基础功能:

  处理静态文件,索引文件以及自动索引;

  反向代理加速(无缓存),简单的负载均衡和容错;

  FastCGI,简单的负载均衡和容错;

  模块化的结构。过滤器包括gzipping, byte ranges, chunked responses, 以及 SSI-filter 。在SSI过滤器中,到同一个 proxy 或者 FastCGI 的多个子请求并发处理;

  SSL 和 TLS SNI 支持;

  IMAP/POP3 代理服务功能:

  使用外部 HTTP 认证服务器重定向用户到 IMAP/POP3 后端;

  使用外部 HTTP 认证服务器认证用户后连接重定向到内部的 SMTP 后端;

  认证方法:

  POP3: POP3 USER/PASS, APOP, AUTH LOGIN PLAIN CRAM-MD5;

  IMAP: IMAP LOGIN;

  SMTP: AUTH LOGIN PLAIN CRAM-MD5;

  SSL 支持;

  在 IMAP 和 POP3 模式下的 STARTTLS 和 STLS 支持;

  支持的操作系统

  FreeBSD 3.x, 4.x, 5.x, 6.x i386; FreeBSD 5.x, 6.x amd64;

  Linux 2.2, 2.4, 2.6 i386; Linux 2.6 amd64;

  Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;

  MacOS X (10.4) PPC;

 

  结构与扩展:

  一个主进程和多个工作进程。工作进程是单线程的,且不需要特殊授权即可运行;

  kqueue (FreeBSD 4.1+), epoll (Linux 2.6+), rt signals (Linux 2.2.19+), /dev/poll (Solaris 7 11/99+), select, 以及 poll 支持;

  kqueue支持的不同功能包括 EV_CLEAR, EV_DISABLE (临时禁止事件), NOTE_LOWAT, EV_EOF, 有效数据的数目,错误代码;

  sendfile (FreeBSD 3.1+), sendfile (Linux 2.2+), sendfile64 (Linux 2.4.21+), 和 sendfilev (Solaris 8 7/01+) 支持;

  输入过滤 (FreeBSD 4.1+) 以及 TCP_DEFER_ACCEPT (Linux 2.4+) 支持;

  10,000 非活动的 HTTP keep-alive 连接仅需要 2.5M 内存。

  最小化的数据拷贝操作;

 

  其他HTTP功能:

  基于IP 和名称的虚拟主机服务;

  Memcached 的 GET 接口;

  支持 keep-alive 和管道连接;

  灵活简单的配置;

  重新配置和在线升级而无须中断客户的工作进程;

  可定制的访问日志,日志写入缓存,以及快捷的日志回卷;

  4xx-5xx 错误代码重定向;

  基于 PCRE 的 rewrite 重写模块;

  基于客户端 IP 地址和 HTTP 基本认证的访问控制;

  PUT, DELETE, 和 MKCOL 方法;

  支持 FLV (Flash 视频);

  带宽限制;

 

Basic HTTP features:

  • Handling of static files, index files, and autoindexing; open file descriptor cache;
  • Accelerated reverse proxying without caching; simple load balancing and fault tolerance;
  • Accelerated support without caching of remote FastCGI servers; simple load balancing and fault tolerance;
  • Modular architecture. Filters include gzipping, byte ranges, chunked responses, XSLT, and SSI. Multiple SSI inclusions within a single page can be processed in parallel if they are handled by FastCGI or proxied servers.
  • SSL and TLS SNI support.

Mail proxy server features:

  • User redirection to IMAP/POP3 backend using an external HTTP authentication server;
  • User authentication using an external HTTP authentication server and connection redirection to internal SMTP backend;
  • Authentication methods:
    • POP3: USER/PASS, APOP, AUTH LOGIN PLAIN CRAM-MD5;
    • IMAP: LOGIN, AUTH LOGIN PLAIN CRAM-MD5;
    • SMTP: AUTH LOGIN PLAIN CRAM-MD5;
  • SSL support;
  • STARTTLS and STLS support.

Tested OS and platforms:

  • FreeBSD 3 — 7 / i386; FreeBSD 5 — 7 / amd64;
  • Linux 2.2 — 2.6 / i386; Linux 2.6 / amd64;
  • Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
  • MacOS X / ppc, i386;

Architecture and scalability:

  • one master process and several workers processes. The workers run as unprivileged user;
  • 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, and poll support;
  • various kqueue features support including EV_CLEAR, EV_DISABLE (to disable event temporalily), NOTE_LOWAT, EV_EOF, number of available data, error codes;
  • sendfile (FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5), sendfile64 (Linux 2.4.21+), and sendfilev (Solaris 8 7/01+) support;
  • accept-filter (FreeBSD 4.1+) and TCP_DEFER_ACCEPT (Linux 2.4+) support;
  • 10,000 inactive HTTP keep-alive connections take about 2.5M memory;
  • data copy operations are kept to a minimum.

Other HTTP features:

  • name- and IP-based virtual servers;
  • keep-alive and pipelined connections support;
  • flexible configuration;
  • reconfiguration and online upgrade without interruption of the client processing;
  • access log formats, bufferred log writing, and quick log rotation;
  • 4xx-5xx error codes redirection;
  • rewrite module;
  • access control based on client IP address and HTTP Basic authentication;
  • PUT, DELETE, MKCOL, COPY and MOVE methods;
  • FLV streaming;
  • speed limitation;
  • limitation of simultaneous connections or requests from one address.

Experimental features:

  • embedded perl.
请尽量让自己的答案能够对别人有帮助

7个答案

默认排序 按投票排序