• Tengine Web服务器概述


    Tengine Web服务器概述

    Tengine是由淘宝网发起的Web服务器项目。在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。目的是打造一个高效、安全的Web平台。

    发展

    Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验

    最终目标是打造一个高效、稳定、安全、易用的Web平台。

    从2011年12月开始,Tengine成为一个开源项目。

    由Tengine团队开发和维护。Tengine团队的核心成员来自于淘宝、搜狗等互联网企业。

    功能

    以下沿引项目主页上的特性介绍:

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

    编译

    tengine的编译参数与nginx基本一致,针对tengine的新增特性,可以在编译的时候增加一些参数,比如增加“ --with-http_concat_module”这一参数,就可以使将tengine的组合多个访问请求变为一个的功能打开。以下是一段tengine的编译参数实例:

    ./configure --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-http_concat_module --with-http_realip_module --with-http_addition_module --with-http_gzip_static_module --with-http_random_index_module --with-http_stub_status_module --with-http_sub_module --with-http_dav_module --with-pcre=/usr/local/src/pcre-8.20

    特性详解

    CDN Combo

    这一功能可以组合Javascript 以及 Css文件

    使用方法:

    a)以两个问号(??)激活combo

    b)多文件之间用半角逗号(,)分开

    c)用一个?来辨识时间戳

    作用:

    遵循Yahoo!前端优化准则第一条:减少HTTP请求发送次数

    强制gzip压缩

    默认开启的功能

    作用:

    Tengine会在用户浏览器没有在请求中带Accept-Encoding时通过下列方式判断是否gzip,保证只要支持gzip的浏览器中都会被覆盖到.

    a)如果浏览器没有带有Accept-Encoding且cookie中没有gzip支持标识

    b)通过User-Agent判断是否支持

    c)发送一段js脚本,脚本中请求一个永远都gzip的url

    d)如果该段内容被执行,则写入一个cookie值标识此浏览器支持gzip

    过载保护

    在http{}段添加

    sysguard on; sysguard_load load=4 action=/high_load.html; #系统负载,超过设置值了就跳转到action设置的页面

    sysguard_mem swapratio=10% action=/mem_high.html #内存负载,超过设置值了就跳转到action设置的页面

    作用:

    可以在系统超负载时友好提示用户,增强用户体验。

    提示:

    大家可以通过 top命令来查看当前系统负载,最好是借助第三方工具进行服务器负载监控,进行数天或1个月的监控,分析出准确适合的运营数据后再设置过载保护功能。

    修改nginx默认使用的消息模型

    添加方法:

    在events {}段添加

    use epoll;

    作用:

    使用linux内核最新支持的epoll句柄处理模型,对于大流量的网站这个配置开启提升会非常大。

    (注:确定系统内核版本>=2.5.44 最好是2.6+, 查看方式uname -a)

    隐藏webServerName

    添加方法:

    在http{} 段内添加

    server_tag off;

    server_tag IIS/6.0;

    作用:

    隐藏真实web服务器名称,防止hacker有针对性的突破

    nginx进程设置简化

    添加方法:

    修改配置文件中的worker_process为以下

    worker_processes auto;worker_cpu_affinity auto;

    作用:

    在不同硬件环境下对于nginx本身的生产进程优化会由webserver自动调整,而无需专业知识进行调优。

    扩展4xx,5xx错误提示

    添加方法:

    在http{} 段内添加

    server_info on;server_admin xxx@xxx.xxx;

    作用:

    展示管理员联系方式以便用户反馈错误

    扩展的nginx命令行参数

    方法:

    切换至

    /usr/local/nginx/sbin

    列出当前已编译的模块

    ./nginx -m

    列出当前支持的指令

    ./nginx -l

    日志抽样支持

    方法:

    Example:access_log xxxx ratio=0.01;

    作用:

    减少日志数量。

     

    人工智能芯片与自动驾驶
  • 相关阅读:
    读书-《智能时代》-机器智能正在革我们的命
    判断Http服务器是否支持支持断点续传
    最全Html标签Meta介绍
    用PHP整理照片和视频文件
    读书-《癌症.真相:医生也在读》-我所认识的癌症
    scrapy-redis组件配置用例
    Scrapy+seleninu抓取内容同时下载图片几个问题
    无界浏览器Chorme命令行开关
    Scrapy Crawl 运行出错 AttributeError: 'xxxSpider' object has no attribute '_rules' 的问题解决
    福利,OpenCV最新中文版官方教程来了
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/14707291.html
Copyright © 2020-2023  润新知