良玉的博客 点点滴滴,积水成河_良玉的博客_页游、手游linux运维工程师之路

Tengine和nginx的区别

nginx和tengine的压测数据基本上区别不大,吞吐量相差就1%左右。配置也几乎一样可以使用。

然而tengine提供了,taobao nginx的一些模块。
比如:
• beacon: 打点模块 
• tmd: 防CC攻击模块 
• gray: 灰度发布模块 
• hat: 防UTF-7攻击模块 
• waf: 防hash dos攻击模块 
• trans: 简繁转换模块
等等


配置文件的结构简化一下,就是这样:
main块
            event块{             #定义nginx的事件模型,不可或缺。
            }
            http块 {              #http服务器的必要块。
                      server块 { #定义虚拟主机的块。
                                   if块 {}
                                   location块 {        #定义uri规则的块,可以使用正则表达式
                                                    if块 {}   #类似Apache RewriteCond的重新规则条件的功能。
                                  }
                      }
            }


相关tengine配置说明

worker_processes     auto;
worker_cpu_affinity  auto;
根据cpu数量自动设定Tengine的worker进程数量,并进行cpu绑定。

user    admin;
设置worker进程的用户名为admin。

worker_rlimit_nofile    1000000;
设置打开的文件句柄最大数量为100000。这个参数跟系统的ulimit有关哦,你懂的。

error_log    logs/error.log warn;
指定error_log的日志文件为logs/error.log并设置记录级别为warning

pid     /home/admin/cai/logs/nginx-proxy.pid;
指定tengine的pid文件位置,tengine通过此文件得到master进程的进程id。

events {
    use    epoll;
    worker_connections    20480;
}
设定事件模型使用epoll,每个worker进程可用的最大连接数是20480。
为什么nginx比apache快,epoll起到了比较关键的作用。

root    /home/admin/cai/htdocs;
设置静态文件所在地,也就是网站根目录。

sendfile    on;
打开会使用sendfile系统调用,用来发送静态文件,节省了文件在用户空间和内核空间拷贝的消耗。

tcp_nopush     on;
打开后,会使TCP在发送数据时进行缓存,提高传输效率,但是会增加客户端响应时间。

server_tokens     off;
关闭后,nginx在错误页面和响应的Server头中不会携带版本号信息。

keepalive_timeout     15s;
keepalive_requests     100;
设置keepalive连接的超时时间为15s,并且每处理100个请求以后就关闭链接

client_header_timeout    1m;
设置请求头的读入超时,在此段时间内请求头未读完,则返回408错误。

client_body_timeout    1m;
send_timeout               1m;
从客户端读取数据和发送数据到客户端的超时时间为1秒,如果此段时间内未从客户端收到任何数据或未接收到客户端的ACK响应,则认为超时。

client_max_body_size     3M;
设置客户端上传正文的最大长度。

index       index.html   index.htm;
这个,我就不解释了,很多东西,大家都懂的!!!

log_format       proxyformat   "...";
定制access_log的格式。  顺便提一下, error_log的格式是固定的。

access_log      logs/access.log    proxyformat;
设置使用proxyformat格式将access log写入logs/access.log  文件。

log_not_found     off;
当请求的文件不存在的时候,不记录error log。404的错误不记入日志文件呀。

gzip                         on;
gzip_http_version   1.0;
gzip_comp_level     6;
gzip_min_length     1024;
gzip_proxied           any;
gzip_vary                 on;
gzip_disable            msie6;
gzip_buffers            96 8k;
gzip_types               text/xml  text/plain  text/css  application/javascript  application/x-javascript  application/rss+xml;
打开gzip压缩功能,指定压缩比为6级别,buffer大小是96*8k,并且输出vary头信息。
压缩的条件是http/1.0以上,内容长度在1024字节以上,浏览器非msie6及一下版本,并且内容content-type为定义类型。

proxy_set_header       Host $host;
proxy_set_header       X-Real-IP  $remote_addr;
proxy_set_header       Web-Server-Type  nginx;
proxy_set_header       WL-Proxy-Client-IP    $remote_addr;
proxy_set_header       X-Forwarded-For  $proxy_add_x_forwarded_for;
proxy_redirect            off;
proxy_buffers             128 8k;

设置反向代理属性,包括传递给后端服务器的请求头信息,关闭对相应中的Location头信息和Refresh头信息做文本替换,以及设置缓冲区大小为128 * 8k。
后端服务器需要从“X-Real-IP”的HTTP头部取得客户端的ip信息。

标签: nginxtenginenginx和tengine的区别

作者:良玉 分类:Nginx 浏览:4371 评论:0
留言列表
发表评论
来宾的头像