Nginx\ cache

Nginx有两类进程,一类称为Master进程(相当于管理进程),另一类称为Worker进程(实际工作进程)。
利用epoll模型,基于事件响应,监听某个事件,处理后接着监听其他事件,直到事件到达后处理,不会一直等着,比如等一个http请求从建立连接到响应,占用一个线程,nginx可以一个线程处理多个连接,降低服务器压力

OSI的7层从上到下分别是
7 应用层 应用服务层HTTP服务
6 表示层 不能系统间通信
5 会话层 建立连接、管理会话
4 传输层 提供端对端接口,TCP协议,保证完整性,UDP,保证速度
3 网络层 IP寻址\路由
2 数据链路层 定义传输格式,校验格式
1 物理层 设备

现在的7层负载均衡,主要还是着重于应用HTTP协议,所以其应用范围主要是众多的网站或者内部信息平台等基于B/S开发的系统。 4层负载均衡则对应其他TCP应用,例如基于C/S开发的ERP等系统,4层负载均衡效率更高。

【个人见解】针对nginx在7层网络模型的位置:nginx提供端对端的接口,如提供80端口给客户端,将请求代理给服务端某个ip和端口,因此它用到了网络层、传输层。它提供了建立连接、管理会话等功能,因此用到了会话层,nginx无视请求和响应放的系统差异,因此涵盖了表示层,通过nginx提供一个服务,因此还用到了应用层

 events 
{
                                        use epoll;
                                        worker_connections 65535;
}

proxy_cache_path /export/nginx_cache/xs levels=1:2 keys_zone=xs_cache:5000m inactive=8h max_size=20g;
keys_zone=xs_cache:5000m cache名称:共享内存大小为5G
levels=1:2 表示两级目录
inactive=8h 8小时无人访问就删除
max_size:最大缓存时间

upstream tomcat_1 {
    server 127.0.0.1:80 weight=10 max_fails=2 fail_timeout=30s;
}

    location ~* ^/x1/(2|3).*\.html {
            proxy_next_upstream http_500 http_502 http_503 http_504 error timeout invalid_header;
    proxy_cache_use_stale error timeout;
    proxy_cache xs_cache;
    proxy_cache_valid  200 304  10m;
    proxy_cache_key $host$uri;
    proxy_pass http://tomcat_1;
    //proxy_pass http://localhost:8091/;
    }
    
    location ~ /purge(/.*)
{
                error_page 404 500 502 503 504 @purge_error;
                set $var1 $1;
                set $cache_key $host$var1$is_args$args;   //默认为静态资源,cache_key带参数
                if ( $uri ~* .*\.html$){
                                set $cache_key  $host$var1;  //html,cache_key不带参数
                }

                allow 10.0.0.0/8;
                allow 172.0.0.0/8;
                deny all;
                proxy_cache_purge    xs_cache   $cache_key;
}

较高的Windows版本上无法测试cache模块

猜你喜欢

转载自www.cnblogs.com/windliu/p/9724896.html
今日推荐