基于Nginx的衍生版服务器Tengine简介

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

Nginx的特性:

1、基本的HTTP服务器特性

1.处理静态文件,索引文件以及自动索引;打开文件描述符缓存;
2.使用缓存加速反向代理;简单负载均衡以及容错;
3.远程FastCGI,uwsgi,SCGI,和memcached服务的缓存加速支持;简单的负载均衡以及容错;
4.模块化的架构。过滤器包括gzip压缩、ranges支持、chunked响应、XSLT,SSI以及图像缩放。在SSI 过滤器中,一个包含多个SSI的页面,如果经由FastCGI或反向代理处理,可被并行处理;
5.支持SSL,TLS SNI。

2、其他的HTTP服务器特性

1.基于名字和IP的虚拟主机;
2.Keep-alive和pipelined连接支持;
3.灵活的配置;
4.重新加载配置以及在线升级时,不需要中断正在处理的请求;
5.自定义访问日志格式,带缓存的日志写操作以及快速日志轮转;
6.3xx-5xx错误代码重定向;
7.重写(rewrite)模块:使用正则表达式改变URI;
8.根据客户端地址执行不同的功能;
9.基于客户端IP地址和HTTP基本认证机制的访问控制;
10.支持验证HTTP referer;
11.支持PUT、DELETE、MKCOL、COPY以及MOVE方法;
12.支持FLV流和MP4流;
13.速度限制;
14.来自同一地址的同时连接数或请求数限制;
15.嵌入Perl语言。

3、邮件代理服务器特性

1.使用外部HTTP认证服务器重定向用户到IMAP/POP3后端;
2.使用外部HTTP认证服务器认证用户后重定向连接到内部SMTP后端;
3.支持的认证方式:
 3.1).POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
 3.2)IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
 3.3)SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
4.SSL支持;
5.STARTTLS和STLS支持。

Tengine的特性:

1.继承Nginx-1.4.7的所有特性,100%兼容Nginx的配置;
2.动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
3.支持SPDY v3协议,自动检测同一端口的SPDY请求和HTTP请求;
4.流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
5.更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线;
6.输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
7.支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
8.动态脚本语言Lua支持。扩展功能非常高效简单;
9.支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
10.支持按指定关键字(域名,url等)收集Tengine运行状态;
11.组合多个CSS、JavaScript文件的访问请求变成一个请求;
12.自动去除空白字符和注释从而减小页面的体积
13.自动根据CPU数目设置进程个数和绑定CPU亲缘性;
14.监控系统的负载和资源占用从而对系统进行保护;
15.显示对运维人员更友好的出错信息,便于定位出错机器;
16.更强大的防攻击(访问速度限制)模块;
17.更方便的命令行参数,如列出编译的模块列表、支持的指令等;
18.可以根据访问文件类型设置过期时间;

架构和扩展性(Nginx)

1.一个主进程和多个工作进程,工作进程以非特权用户运行;
2.支持的事件机制: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;
3.众多支持的kqueue特性包括EV_CLEAR、EV_DISABLE(临时禁止事件)、NOTE_LOWAT、EV_EOF,可用数据的数量,错误代码;
4.支持sendfile(FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5+)、sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01+);
5.文件AIO(FreeBSD 4.3+, Linux 2.6.22+);
DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);
6.支持Accept-filters(FreeBSD 4.1+, NetBSD 5.0+)和 TCP_DEFER_ACCEPT(Linux 2.4+);
7.10000个非活跃的HTTP keep-alive连接仅占用约5M内存;
8.尽可能避免数据拷贝操作。

(0)

相关推荐

  • Nginx简介_动力节点Java学院整理

    1.什么是Nginx Nginx来自俄罗斯的Igor Sysoev在为Rambler Media(http://www.rambler.ru/)工作期间,使用C语言开发了Nginx.Nginx作为Web服务器,一直为俄罗斯著名的门户网站Rambler Media提供着出色.稳定的服务. Igor Sysoev将Nginx的代码开源,并且赋予其最自由的2-clause BSD-like license许可证.由于Nginx使用基于事件驱动的架构能够并发处理百万级别的TCP连接,高度模块化的设计和自

  • 简介Nginx服务器的Websockets配置方法

    Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 "Nginx 支持 websockets 吗?" 成为了 freenode上的#nginx频道最常问的问题. 有了这种方式,让我们来看看Nginx的WebSocket实现. Nginx新添加的Websockets配置指令 文档中提到的配置如下:(译者注:原文中的链接其实不是文档的链接.现在nginx的官方

  • 一些优化Nginx服务器的技巧简介

    大多数的Nginx安装指南告诉你如下基础知识--通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能很好地工作了.然而,如果你真的想挤压出nginx的性能,你必须更深入一些.在本指南中,我将解释Nginx的那些设置可以微调,以优化处理大量客户端时的性能.需要注意一点,这不是一个全面的微调指南.这是一个简单的预览--那些可以通过微调来提高性能设置的概述.你的情况可能不同. 基本的 (优化过的)配置

  • 简介Nginx中的location匹配规则

    location匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配,只匹配该选项,不匹配别的选项,一般用来匹配目录 =      #进行普通字符精确匹配 @     #"@" 定义一个命名的 location,使用在内部定向时,例如 error_page, try_files location 匹配的优先级(与location在配置文件中的顺序无关) = 精确匹配会第一个

  • 简介使用Nginx Plus的在线活动监控功能的方法

    想了解你的 NGINX 服务器现在是什么情况? 是被 DoS 攻击, 还是网站出现一堆错误? NGINX Plus 现在推出一个时实活动监视接口,提供关键负载(key load )和性能监控. 通过简单的 RESTful JSON 接口,连接实时监控统计数据(stats to live dashboards) 和第三方监控工具,都变得轻轻松松. NGINX Plus 的 平衡负载状态时实监控 细节: 在线活动监控 – JSON feed 在NGINX Plus中启用该状态提示,只需简单地在服务器

  • 基于Nginx的衍生版服务器Tengine简介

    Tengine是由淘宝网发起的Web服务器项目.它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验.它的最终目标是打造一个高效.稳定.安全.易用的Web平台. Nginx的特性: 1.基本的HTTP服务器特性 1.处理静态文件,索引文件以及自动索引:打开文件描述符缓存: 2.使用缓存加速反向代理:简单负载均衡以及容错: 3.远程FastCGI,uwsgi,SCGI,和memcached服务的缓

  • 基于nginx实现上游服务器动态自动上下线无需reload的实现方法

    网上关于nginx的介绍有很多,这里讲述的是上游服务(如下图的Java1服务)在没有"网关"的情况下,如何通过nginx做到动态上下线. 传统的做法是,手动修改nginx的upstream文件,将Java1的配置注释或者标记为down,然后reload nginx生效.当然可以做成脚本自动化修改,然而对于一个繁忙的nginx来说,贸然reload轻则响应缓慢,重则雪崩丢失流量. 那么怎样做到nginx动态加载upstream配置呢?网上大体有3种方案: 通过Lua脚本结合nginx,也

  • 基于Nginx的Mencached缓存配置详解

    简介 memcached是一套分布式的高速缓存系统,memcached缺乏认证以及安全管制,这代表应该将memcached服务器放置在防火墙后.memcached的API使用三十二比特的循环冗余校验(CRC-32)计算键值后,将数据分散在不同的机器上.当表格满了以后,接下来新增的数据会以LRU机制替换掉.由于memcached通常只是当作缓存系统使用,所以使用memcached的应用程序在写回较慢的系统时(像是后端的数据库)需要额外的代码更新memcached内的数据 特征 memcached作

  • 基于Nginx实现HTTPS网站设置的步骤

    目录 前言: 加密算法: 一.HTTPS 简介 二.Nginx 实现 HTTPS 网站设置 1.安装 Nginx 2.创建服务器证书密钥文件 3.创建服务器证书的申请文件 4.生成证书文件 5.修改 Nginx 主配置文件 前言: 首先在这里简单说一下为什么现在都在使用 HTTPS 协议: 其实使用 HTTPS 协议最大的原因就是因为 HTTP 协议不安全,因为 HTTP 数据传输时是:明文传输数据 也就是说当客户端在输入用户名和密码时,都会显示出来.而 HTTPS 协议的话则是 密文传输数据

  • 如何将 Nginx 配置为Web服务器的方法

    阅读之前,建议先阅读初识 Nginx. 之后,我们来了解一下 Nginx 配置. 抽象来说,将 Nginx 配置为 Web 服务器就是定义处理哪些 URLS 和如何处理这些URLS 对应的请求.具体来说,就是定义一些虚拟服务器(Virtual Servers),控制具有特定 IP 和域名的请求. 更具体的来说, Nginx 通过定义一系列 locations 来控制对 URIS 的选择.每一个 location 定义了对映射到自己的请求的处理场景:返回一个文件或者代理请求,或者根据不同的错误代码

  • CentOS基于nginx反向代理实现负载均衡的方法

    本文实例讲述了CentOS基于nginx反向代理实现负载均衡的方法.分享给大家供大家参考,具体如下: nginx做负载均衡的优点: 1.工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名.目录结构,它的正则规则比HAProxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,nginx单凭这点可利用的场合就远多于LVS了 2.nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势之一:相反LVS对网络稳定性依赖比较大,这点本人深有体会

  • 基于nginx access日志格式详解

    nginx的nginx.cnf中,使用log_format字段可以指定日志的格式文件. log.fromat: log_format access ' [$time_local] | $host | $remote_addr | $request | $request_time | $body_bytes_sent | $status |' '| $upstream_addr | $upstream_response_time | $upstream_status |' ' "$http_ref

  • 基于Nginx实现访问控制、连接限制

    前言 Nginx自带的模块支持对并发请求数进行限制, 还有对请求来源进行限制.可以用来防止DDOS攻击. 阅读本文须知道nginx的配置文件结构和语法. 1. 默认配置语法 nginx.conf作为主配置文件 include /etc/nginx/conf.d/*.conf读到这会把该目录的.conf也读进来 1.1 全局性的和服务级别的 user 设置使用用户 worker_processes 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个 error_log nginx的错误日志

  • 基于nginx的静态网页部署的实现

    背景: 一序列的html网页需要部署 基于nginx的部署: 本文采用的基于openresty的nginx 配置. 简单地配置 Nginx 的配置文件,以便在启动 Nginx 时去启用这些配置即可实现对于编写好的html网页的点击跳转访问.而本文的重点也是于此. 配置方式1: Nginx 的配置系统由一个主配置文件和其他一些辅助的配置文件构成.这些配置文件均是纯文本文件,一般地,我们只需要配置主配置文件就行了./usr/local/openresty/nginx/conf 下的配置文件修改如下:

  • 基于nginx设置浏览器协商缓存过程详解

    这篇文章主要介绍了基于nginx设置浏览器协商缓存过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 强缓存与协商缓存的区别 强缓存:浏览器不与服务端协商直接取浏览器缓存 协商缓存:浏览器会先向服务器确认资源的有效性后才决定是从缓存中取资源还是重新获取资源 协商缓存运作原理 现在有一个这样的业务情景:后端的静态资源会不定时地发生更新,而因为浏览器默认使用强缓存,会默认从浏览器缓存中取到过时的资源. 现在我们希望浏览器每次获取资源的时候都向后

随机推荐