Nginx缓存的配置调优,Tengine安装和配置。,nginxtengine


反向代理缓存:

    nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从本地构造响应报文。

可以在http全局配置内定义缓存。

http{

proxy_cache_path /tmp/nginx/cache levels=1:2 keys_zone=cone:10m max_size=1g;

}

在Server里调用。


server {

        listen       80;

        server_name  localhost;

        location / {

        proxy_pass http://192.168.18.121;

        proxy_cache cone;

        proxy_cache_valid 202 1h;

        proxy_cache_valid 302 10m;

        proxy_cache_valid any 1m;

        }

}
inactive:非活动缓存项从缓存中剔除之前的最大缓存时长;

配置成功了,那如何验证缓存有没有命中?

可以把后端服务器添加到upstream里面,引入一个upstream_cache_status变量其作用是检查缓存状态,用addheader添加到响应首部里面。

upstream模块常用指令:

ip_hash:基于客户端IP地址完成请求的分发,它可以保证来自于同一个客户端的请求始终被转发至同一个upstream服务器;

keepalive:后端服务器到upstream服务器的持久连接。

least_conn:最少连接调度算法;

server:定义一个upstream服务器的地址,还可包括一系列可选参数,如:

weight:权重;

max_fails:最大失败连接次数,失败连接的超时时长由fail_timeout指定;

fail_timeout:等待请求的目标服务器发送响应的时长;

backup:用于fallback的目的,所有服务均故障时才启动此服务器;

down:手动标记其不再处理任何请求;

example:

    

upstream backend {

 ip_hash;

 server www.magedu.com weight=5;

 server www2.magedu.com:8080       max_fails=3  fail_timeout=30s;

}

Fastcgi缓存配置:

定义缓存

http{

fastcgi_cache_path /tmp/nginx/fastcgi levels=1:2 keys_zone=fcgi:20m max_size=1g;

}

设定主页和路径

server {

        listen       80;

        server_name  localhost;

        #charset koi8-r;

        location / {

                root /var/www/html;

                index index.php;

}

}

配置缓存

location ~ \.php$ {

            root           /var/www/html;

            fastcgi_pass   192.168.18.121:9000;

            fastcgi_index  index.php;

            fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

            include        fastcgi_params;

            fastcgi_cache fcgi;

            fastcgi_cache_valid 200 10m;

            fastcgi_cache_valid 301 302 2m;

            fastcgi_cache_valid any 1m;

        }

我们先把缓存给注释掉,然后reload,用ab命令测试下速率。

wKiom1PHHYex4vEoAAK5eLeOdOo501.jpg

现在我们把缓存功能打开,然后reload再测试,看效果大大不同吧。


wKioL1PHHq-w9Ts7AAKIG6hsTW8356.jpg

配置Gzip压缩功能,以节约带宽。

  gzip on;

启用和关闭gzip

  gzip_min_length  1k;

最小压缩长度
  gzip_buffers     4 16k;

设定压缩响应的缓冲,默认大小等同于你的内存页,4k或8k至于多少取决于你的平台。
  gzip_http_version 1.0;

设置最低http协议版本
  gzip_comp_level 2;

设置压缩基本取值范围1-9
  gzip_types       text/html text/plain application/x-javascript text/css application/xml;

设置压缩类型
  gzip_vary on; 

http部分调优: 

client_header_buffer_size 4k;
客户端请求头部的缓冲区大小,这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE 取得。

open_file_cache max=102400 inactive=20s;
这个将为打开文件指定缓存,默认是没有启用的,max 指定缓存数量,建议和打开文件数一致,inactive 是指经过多长时间文件没被请求后删除缓存。

open_file_cache_valid 30s;
这个是指多长时间检查一次缓存的有效信息。

open_file_cache_min_uses 1;
open_file_cache 指令中的inactive 参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive 时间内一次没被使用,它将被移除。

参考文档:http://foreveryan.blog.51cto.com/3508502/674322

平滑升级:

先用新版本的Nginx程序把老版本的替换掉,然后给master进程发一个信号,让主进程重启一下。

    kill -SIGUSER2 <master_process_id>

日志滚动:

    -s reopen: kill -SIGUSR1 <master_process_id>

    1、mv /var/log/nginx/access.log /var/log/nginx/access.bak

    2、kill -s SIGUSR1 20980

信号发送完后,应该将源日志文件改名,或者移动到别的地方,系统会自动建立一个新日志文件。

重读配置文件:

    -s reload:kill -SIGHUP <master_process_id>


安装Tengine

  • tar zxvf tengine-2.0.3.tar.gz

  • cd tengine-2.0.3

编译之前先安装依赖程序包:

gd-2.0.35-11.el6.i686.rpm

gd-devel-2.0.35-11.el6.i686.rpm

GeoIP-1.4.8-1.el6.i686.rpm

GeoIP-devel-1.4.8-1.el6.i686.rpm

lua-devel

pcre-devel

开始编译安装:

./configure \

  --prefix=/usr \

  --sbin-path=/usr/sbin/nginx \

  --conf-path=/etc/nginx/nginx.conf \

  --error-log-path=/var/log/nginx/error.log \

  --http-log-path=/var/log/nginx/access.log \

  --pid-path=/var/run/nginx/nginx.pid  \

  --lock-path=/var/lock/nginx.lock \

  --user=nginx \

  --group=nginx \

  --enable-mods-shared=all

  • make && make install


详细用法参考官网:tengine.taobao.com


有问题欢迎与我交流QQ1183710107


本文转自qw87112 51CTO博客,原文链接:http://blog.51cto.com/tchuairen/1439263


相关内容