特性
继承Nginx-1.2.9的所有特性,100%兼容Nginx的配置;
动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线;
输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
动态脚本语言Lua支持。扩展功能非常高效简单;
支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
组合多个CSS、JavaScript文件的访问请求变成一个请求;
自动去除空白字符和注释从而减小页面的体积
自动根据CPU数目设置进程个数和绑定CPU亲缘性;
监控系统的负载和资源占用从而对系统进行保护;
显示对运维人员更友好的出错信息,便于定位出错机器;
更强大的防攻击(访问速度限制)模块;
更方便的命令行参数,如列出编译的模块列表、支持的指令等;
可以根据访问文件类型设置过期时间;
…
安装jemalloc可以增加性能
-
cd /root/src/toolkits/
-
wget
-
tar jxvf jemalloc-3.4.1.tar.bz2
-
cd jemalloc-3.4.1
-
./configure --prefix=/usr/local/jemalloc-3.4.1
-
make && make install
-
ldconfig
GeoIP白名单
-
wget
-
tar -zxvf GeoIP.tar.gz
-
cd GeoIP-1.4.6
-
./configure
-
make; make install
-
ldconfig
使用proxy_cache时增加purge模块
-
wget
-
tar zxvf ngx_cache_purge-2.1.tar.gz
-
--add-module=../ngx_cache_purge-2.1
后端nginx编译时需加上–with-http_realip_module以获取真实ip,并指定来源
-
set_real_ip_from 61.199.67.2; #前端ip
-
set_real_ip_from 192.168.0.111;#前端ip
-
real_ip_header X-Real-IP;
编译安装tengine
jemalloc为编译路径
-
wget
-
tar zxvf tengine-1.5.1.tar.gz
-
cd tengine-1.5.1
-
./configure --user=www --group=website --prefix=/opt/tengine-1.5.1 --add-module=../ngx_cache_purge-2.1 --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module \
-
--with-http_concat_module=shared \
-
--with-http_sysguard_module=shared \
-
--with-http_limit_conn_module=shared \
-
--with-http_limit_req_module=shared \
-
--with-http_footer_filter_module=shared \
-
--with-http_upstream_ip_hash_module=shared \
-
--with-http_upstream_least_conn_module=shared \
-
--with-http_upstream_session_sticky_module=shared \
-
--with-jemalloc=/root/src/lempelf/packages/jemalloc-3.4.1
-
make
-
make install
GeoIp数据
-
cd /opt/tengine-1.5.1/conf
-
wget
-
gunzip GeoIP.dat.gz
-
-
chgrp -R website /opt/tengine-1.5.1/conf
-
chmod -R 764 /opt/tengine-1.5.1/conf
-
chmod 774 /opt/tengine-1.5.1/conf
复制原nginx的配制文件于tengine
-
cd /opt/nginx/conf
-
cp awstats.conf fcgi.conf htpasswd block.conf nginx.conf /opt/tengine-1.5.1/conf/
检测配置文件
-
/opt/tengine-1.5.1/sbin/nginx -t -c /opt/tengine-1.5.1/conf/nginx.conf
-
nginx: [emerg] unknown directive "limit_zone" in /opt/tengine-1.5.1/conf/nginx.conf:71
-
nginx: [emerg] unknown directive "limit_conn" in /opt/tengine-1.5.1/conf/nginx.conf:136
-
如果有以上错误,需去掉limit_conn配置,ngx_http_limit_conn_module 模块在新版已使用新指令
增加新的功能
vi /opt/tengine-1.5.1/conf/nginx.conf
根据cpu数量自动设定Tengine的worker进程数量,并进行cpu绑定。
-
worker_processes auto;
-
worker_cpu_affinity auto;
关闭系统信息
-
server_info off;
-
server_tag off;
ngx_http_sysguard_module
系统过载保护
-
sysguard on;
-
-
sysguard_load load=10.5 action=/loadlimit;
-
sysguard_mem swapratio=20% action=/swaplimit;
-
sysguard_mem free=100M action=/freelimit;
-
-
location /loadlimit {
-
return 503;
-
}
-
-
location /swaplimit {
-
return 503;
-
}
-
-
location /freelimit {
-
return 503;
-
}
ngx_http_limit_req_module
并发限制模块
-
limit_req_zone $binary_remote_addr zone=one:3m rate=1r/s;
-
limit_req_zone $binary_remote_addr $uri zone=two:3m rate=1r/s;
-
limit_req_zone $binary_remote_addr $request_uri zone=three:3m rate=1r/s;
-
-
location / {
-
limit_req zone=one burst=5;
-
limit_req zone=two forbid_action=@test1;
-
limit_req zone=three burst=3 forbid_action=@test2;
-
}
-
-
location /off {
-
limit_req off;
-
}
-
-
location @test1 {
-
rewrite ^ /test1.html;
-
}
-
-
location @test2 {
-
rewrite ^ /test2.html;
-
}
删除旧的nginx软链接,给tengine增加软链接
rm /opt/nginx
ln -s /opt/tengine-1.5.1 /opt/nginx
一个完整的nginx.conf
启动tengine
/opt/nginx/sbin/nginx
观察了下top降低了许多
===========2014/1/3更新=============
如果负载时大时小可能有io瓶颈,可以将proxy_cache放到/dev/shm 中来解决.(/dev/shm默认为内存一半大小)
创建目录并加入开机执行
vi /etc/rc.local
在nginx启动前加入
mkdir /dev/shm/nginx
修改nginx.conf
-
proxy_temp_path /dev/shm/nginx/proxy_temp_dir;
-
#设置Web缓存区名称为cache_www,内存缓存空间大小为3000MB,1天没有被访问的内容自动清除,硬盘缓存空间大小为30GB。
-
proxy_cache_path /dev/shm/nginx/proxy_cache_www levels=1:2 keys_zone=cache_www:3000m inactive=1d max_size=20g;
阅读(6149) | 评论(0) | 转发(0) |