• Nginx反向代理功能-缓存功能


                 Nginx反向代理功能-缓存功能

                                              作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

    一.未使用缓存时对nginx服务器做压力测试并记录结果

    1>.自行配置nginx的反向代理

    博主推荐阅读:
      https://www.cnblogs.com/yinzhengjie/p/12099808.html

    试验架构说明:
      node101.yinzhengjie.org.cn:
        Nginx反向代理服务器
      node108.yinzhengjie.org.cn:
        Apache httpd web服务器
      node105.yinzhengjie.org.cn:
        ab工具压力测试服务器
    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf
    worker_processes  4;
    worker_cpu_affinity 00000001 00000010 00000100 00001000; 
     
    events {
       worker_connections  100000;
       use epoll;
       accept_mutex on;
       multi_accept on; 
    }
       
       http {
         include       mime.types;
           
         default_type  text/html;
        
         server_tokens off; 
          
         charset utf-8;
       
         log_format my_access_json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_ti
    me,' '"upstreamtime":"$upstream_response_time",' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"uri":"$uri",' '"domain":"$host",' '"xff":"$http_x_forwarded_for",' '"referer":"$http_referer",' '"tcp_xff":"$proxy_protocol_addr",' '"http_user_agent":"$http_user_agent",' '"status":"$status"}';   
        access_log logs/access_json.log my_access_json;
     
        ssl_certificate /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.crt;
        ssl_certificate_key /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;
      
        include /yinzhengjie/softwares/nginx/conf.d/*.conf;
    }
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf
    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf.d/node101_yinzhengjie_org.cn.conf 
    server {
        listen 80;
        listen 443 ssl;
        server_name node101.yinzhengjie.org.cn;
     
        access_log /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_access.log my_access_json;
        error_log /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_error.log;
    
        location / {
           root /yinzhengjie/data/web/nginx/static/cn;
           index index.html;
    
           #定义有效的请求referer,用空格隔开即可
           valid_referers none blocked server_names *.baidu.com example.*  ~.google.;
    
           #如果没有在上面的有效链接定义那么均属于无效请求referer
           if ($invalid_referer) {
               return 403;
           }
    
           #如果是一些常见的压测试工具,咱们直接进给他拒绝访问
           if ($http_user_agent ~ "ApacheBench|WebBench|TurnitinBot|Sougou web spider|Grid Server"){
               return 403;
           }
        }
    
        location = /favicon.ico {
           root /yinzhengjie/data/web/nginx/images/jd;
        }
    
        location /app01 {
            #proxy_pass指令用来设置将客户端请求转发给的后端服务器的主机,可以是主机名、IP地址:端口的方式,也可以代理到预先设置的主机群组,需要模块gx_http_upstream_module支持。
            #带斜线,等于访问后端服务器的http://172.30.108:80/index.html内容返回给客户端。
            proxy_pass http://172.30.1.108/;
    
            #proxy_connect_timeout time;配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒,用法如下:
            proxy_connect_timeout 60s;
    
        }
    
        location /static {
            #不带斜线将访问的/static,等于访问后端服务器 http://172.30.1.108:80/static/index.html,即后端服务器配置的站点根目录要有/static目录才可以被访问。    
            proxy_pass http://172.30.1.108;
        }
     
        location /image {
            proxy_pass http://172.30.1.108;
            
            #proxy_hide_header指令用于nginx作为反向代理的时候,在返回给客户端http响应的时候,用于隐藏后端服务器特定的响应首部,
            #默认nginx在响应报文中不传递后端服务器的首部字段Dte, Server, XPad,X-Accel等,可以设置在http,server,location块.
            #隐藏掉ETag的文本值,CDN会根据ETag的值是否发生变化而决定该文件内容是否发生变化,一旦发生变化CDN会重新抓取该数据并缓存,此处我故意隐藏该值。
            proxy_hide_header ETag;
        }
    
        location /dynamic {
            proxy_pass http://172.30.1.108;
            
            #proxy_set_header可以更改或添加客户端的请求头部信息内容并转发至后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部。
            #添加HOST到报文头部,如果客户端为NAT上网那么其值为客户端的共用的公网IP地址。
            proxy_set_header yinzhengjie_nginx_ip_forwarded $proxy_add_x_forwarded_for;
        }
    }
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf.d/node101_yinzhengjie_org.cn.conf
    [root@node108.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf/httpd.conf 
    ServerRoot "/etc/httpd"
    Listen 80
    Include conf.modules.d/*.conf
    User apache
    Group apache
    ServerAdmin root@localhost
    <Directory />
        AllowOverride none
        Require all denied
    </Directory>
    DocumentRoot "/var/www/html"
    <Directory "/var/www">
        AllowOverride None
        Require all granted
    </Directory>
    <Directory "/var/www/html">
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    <IfModule dir_module>
        DirectoryIndex index.html
    </IfModule>
    <Files ".ht*">
        Require all denied
    </Files>
    ErrorLog "logs/error_log"
    LogLevel warn
    <IfModule log_config_module>
        LogFormat ""%{yinzhengjie_nginx_ip_forwarded}i" %h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
        LogFormat "%h %l %u %t "%r" %>s %b" common
        <IfModule logio_module>
          LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i" %I %O" combinedio
        </IfModule>
        CustomLog "logs/access_log" combined
    </IfModule>
    <IfModule alias_module>
        ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
    </IfModule>
    <Directory "/var/www/cgi-bin">
        AllowOverride None
        Options None
        Require all granted
    </Directory>
    <IfModule mime_module>
        TypesConfig /etc/mime.types
        AddType application/x-compress .Z
        AddType application/x-gzip .gz .tgz
        AddType text/html .shtml
        AddOutputFilter INCLUDES .shtml
    </IfModule>
    AddDefaultCharset UTF-8
    <IfModule mime_magic_module>
        MIMEMagicFile conf/magic
    </IfModule>
    EnableSendfile on
    IncludeOptional conf.d/*.conf
    [root@node108.yinzhengjie.org.cn ~]# 
    [root@node108.yinzhengjie.org.cn ~]# 
    [root@node108.yinzhengjie.org.cn ~]# egrep -v "^ *#|^$" /etc/httpd/conf/httpd.conf

    2>.准备测试数据

    [root@node108.yinzhengjie.org.cn ~]# ll -hR /var/www/html/
    /var/www/html/:
    total 4.0K
    drwxr-xr-x 2 root root 24 Dec 26 14:19 dynamic
    drwxr-xr-x 2 root root 24 Dec 26 14:18 image
    -rw-r--r-- 1 root root 37 Dec 26 14:04 index.html
    drwxr-xr-x 2 root root 42 Dec 26 17:00 static
    
    /var/www/html/dynamic:
    total 4.0K
    -rw-r--r-- 1 root root 40 Dec 26 14:19 index.html
    
    /var/www/html/image:
    total 4.0K
    -rw-r--r-- 1 root root 38 Dec 26 14:18 index.html
    
    /var/www/html/static:
    total 348K
    -rw-r--r-- 1 root root 341K Dec 26 17:00 access.log
    -rw-r--r-- 1 root root   39 Dec 26 14:18 index.html
    [root@node108.yinzhengjie.org.cn ~]# 
    [root@node108.yinzhengjie.org.cn ~]# 

    3>.在node105.yinzhengjie.org.cn使用ab命令对nginx进行压力测试

    [root@node105.yinzhengjie.org.cn ~]# yum -y install httpd-tools
    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirror.bit.edu.cn
     * extras: mirrors.huaweicloud.com
     * updates: mirror.bit.edu.cn
    base                                                                                                                                                 | 3.6 kB  00:00:00     
    extras                                                                                                                                               | 2.9 kB  00:00:00     
    updates                                                                                                                                              | 2.9 kB  00:00:00     
    updates/7/x86_64/primary_db                                                                                                                          | 5.9 MB  00:00:01     
    Resolving Dependencies
    --> Running transaction check
    ---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be installed
    --> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-tools-2.4.6-90.el7.centos.x86_64
    --> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-tools-2.4.6-90.el7.centos.x86_64
    --> Running transaction check
    ---> Package apr.x86_64 0:1.4.8-5.el7 will be installed
    ---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
    --> Finished Dependency Resolution
    
    Dependencies Resolved
    
    ============================================================================================================================================================================
     Package                                   Arch                                 Version                                            Repository                          Size
    ============================================================================================================================================================================
    Installing:
     httpd-tools                               x86_64                               2.4.6-90.el7.centos                                base                                91 k
    Installing for dependencies:
     apr                                       x86_64                               1.4.8-5.el7                                        base                               103 k
     apr-util                                  x86_64                               1.5.2-6.el7                                        base                                92 k
    
    Transaction Summary
    ============================================================================================================================================================================
    Install  1 Package (+2 Dependent packages)
    
    Total download size: 286 k
    Installed size: 584 k
    Downloading packages:
    (1/3): apr-util-1.5.2-6.el7.x86_64.rpm                                                                                                               |  92 kB  00:00:00     
    (2/3): httpd-tools-2.4.6-90.el7.centos.x86_64.rpm                                                                                                    |  91 kB  00:00:00     
    (3/3): apr-1.4.8-5.el7.x86_64.rpm                                                                                                                    | 103 kB  00:00:05     
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    Total                                                                                                                                        48 kB/s | 286 kB  00:00:05     
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
      Installing : apr-1.4.8-5.el7.x86_64                                                                                                                                   1/3 
      Installing : apr-util-1.5.2-6.el7.x86_64                                                                                                                              2/3 
      Installing : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                                                                   3/3 
      Verifying  : apr-1.4.8-5.el7.x86_64                                                                                                                                   1/3 
      Verifying  : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                                                                   2/3 
      Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                                                                              3/3 
    
    Installed:
      httpd-tools.x86_64 0:2.4.6-90.el7.centos                                                                                                                                  
    
    Dependency Installed:
      apr.x86_64 0:1.4.8-5.el7                                                           apr-util.x86_64 0:1.5.2-6.el7                                                          
    
    Complete!
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# yum -y install httpd-tools
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   242.545 seconds
    Complete requests:      100000
    Failed requests:        848
       (Connect: 0, Receive: 0, Length: 848, Exceptions: 0)
    Write errors:           0
    Non-2xx responses:      767
    Total transferred:      34617054848 bytes
    HTML transferred:       34591725127 bytes
    Requests per second:    412.30 [#/sec] (mean)
    Time per request:       4850.895 [ms] (mean)
    Time per request:       2.425 [ms] (mean, across all concurrent requests)
    Transfer rate:          139379.31 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  357 828.0     82   15103
    Processing:    84 3767 6267.4   2446  138604
    Waiting:        1 2235 5548.2    750  116412
    Total:         86 4124 6317.0   2762  138716
    
    Percentage of the requests served within a certain time (ms)
      50%   2762
      66%   3426
      75%   3967
      80%   4433
      90%   6242
      95%  10528
      98%  19385
      99%  32721
     100%  138716 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log    #第一次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   231.811 seconds
    Complete requests:      100000
    Failed requests:        401
       (Connect: 0, Receive: 0, Length: 401, Exceptions: 0)
    Write errors:           0
    Non-2xx responses:      394
    Total transferred:      34766790357 bytes
    HTML transferred:       34741426365 bytes
    Requests per second:    431.39 [#/sec] (mean)
    Time per request:       4636.213 [ms] (mean)
    Time per request:       2.318 [ms] (mean, across all concurrent requests)
    Transfer rate:          146464.11 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  452 1107.2     97   15208
    Processing:    93 3582 5036.2   2618  114911
    Waiting:        1 1903 4579.4    857   73779
    Total:        109 4033 5131.7   3010  114972
    
    Percentage of the requests served within a certain time (ms)
      50%   3010
      66%   3525
      75%   3996
      80%   4442
      90%   6044
      95%   9172
      98%  17817
      99%  30033
     100%  114972 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log    #第二次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   225.578 seconds
    Complete requests:      100000
    Failed requests:        634
       (Connect: 0, Receive: 0, Length: 634, Exceptions: 0)
    Write errors:           0
    Non-2xx responses:      631
    Total transferred:      34684484292 bytes
    HTML transferred:       34659141229 bytes
    Requests per second:    443.31 [#/sec] (mean)
    Time per request:       4511.555 [ms] (mean)
    Time per request:       2.256 [ms] (mean, across all concurrent requests)
    Transfer rate:          150154.73 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  441 1380.2     82   31163
    Processing:    58 3554 5717.6   2413  120031
    Waiting:        1 2131 5636.6    893   93156
    Total:         62 3995 5863.4   2708  120125
    
    Percentage of the requests served within a certain time (ms)
      50%   2708
      66%   3280
      75%   3809
      80%   4309
      90%   6109
      95%   9598
      98%  19167
      99%  33881
     100%  120125 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log    #第三次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   230.977 seconds
    Complete requests:      100000
    Failed requests:        832
       (Connect: 0, Receive: 0, Length: 832, Exceptions: 0)
    Write errors:           0
    Non-2xx responses:      829
    Total transferred:      34615832624 bytes
    HTML transferred:       34590507457 bytes
    Requests per second:    432.94 [#/sec] (mean)
    Time per request:       4619.532 [ms] (mean)
    Time per request:       2.310 [ms] (mean, across all concurrent requests)
    Transfer rate:          146354.77 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  310 611.3     79   15198
    Processing:    95 3782 6025.0   2451   84089
    Waiting:        2 2246 5877.4    976   67208
    Total:        103 4092 6052.2   2701   84949
    
    Percentage of the requests served within a certain time (ms)
      50%   2701
      66%   3277
      75%   3786
      80%   4325
      90%   6014
      95%   9715
      98%  19764
      99%  35307
     100%  84949 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log    #第四次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   258.968 seconds
    Complete requests:      100000
    Failed requests:        1658
       (Connect: 0, Receive: 0, Length: 1658, Exceptions: 0)
    Write errors:           0
    Non-2xx responses:      1624
    Total transferred:      34329476704 bytes
    HTML transferred:       34304223362 bytes
    Requests per second:    386.15 [#/sec] (mean)
    Time per request:       5179.360 [ms] (mean)
    Time per request:       2.590 [ms] (mean, across all concurrent requests)
    Transfer rate:          129455.68 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  457 1155.9     79   15073
    Processing:     4 3902 7964.1   2252  112143
    Waiting:        1 2540 7596.7    651   89124
    Total:          4 4359 8038.9   2568  112190
    
    Percentage of the requests served within a certain time (ms)
      50%   2568
      66%   3137
      75%   3691
      80%   4207
      90%   6468
      95%  10455
      98%  33939
      99%  53567
     100%  112190 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log    #第五次测试
    未配置Nginx缓存时,对Nginx压力测试我们以每秒完成请求数(Requests per second)作为参照点:
        第一次测试Requests per second值:
            412.30 [#/sec] (mean)
        第二次测试Requests per second值:
            431.39 [#/sec] (mean)
        第三次测试Requests per second值:
            443.31 [#/sec] (mean)
        第四次测试Requests per second值:
            432.94 [#/sec] (mean)
        第五次测试Requests per second值:
            386.15 [#/sec] (mean)
    
    去掉一个最高值(443.31)和一个最低值(386.15),算得平均数为:"425 [#/sec] (mean)"
    
    温馨提示:
        如下图所示,测试时可能本地的CPU使用率会飙高,属于正常现象。

    二.nginx配置缓存后再一次做压力测试并记录结果

    1>.在nginx的主配置文件中定义可用于proxy功能的缓存。

    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf/nginx.conf
    worker_processes  4;
    worker_cpu_affinity 00000001 00000010 00000100 00001000; 
     
    events {
       worker_connections  100000;
       use epoll;
       accept_mutex on;
       multi_accept on; 
    }
       
       http {
         include       mime.types;
           
         default_type  text/html;
        
         server_tokens off; 
          
         charset utf-8;
       
         log_format my_access_json '{"@timestamp":"$time_iso8601",' '"host":"$server_addr",' '"clientip":"$remote_addr",' '"size":$body_bytes_sent,' '"responsetime":$request_ti
    me,' '"upstreamtime":"$upstream_response_time",' '"upstreamhost":"$upstream_addr",' '"http_host":"$host",' '"uri":"$uri",' '"domain":"$host",' '"xff":"$http_x_forwarded_for",' '"referer":"$http_referer",' '"tcp_xff":"$proxy_protocol_addr",' '"http_user_agent":"$http_user_agent",' '"status":"$status"}';   
        access_log logs/access_json.log my_access_json;
     
        #配置Nginx反向代理的缓存
        proxy_cache_path /yinzhengjie/data/web/nginx/proxycache levels=1:2:2 keys_zone=proxycache:512m inactive=10m max_size=1g;
    
        ssl_certificate /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.crt;
        ssl_certificate_key /yinzhengjie/softwares/nginx/certs/www.yinzhengjie.org.cn.key;
        ssl_session_cache shared:sslcache:20m;
        ssl_session_timeout 10m;
      
        include /yinzhengjie/softwares/nginx/conf.d/*.conf;
    }
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -t
    nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful
    [root@node101.yinzhengjie.org.cn ~]# 

    2>.在子配置文件中调用缓存功能

    [root@node101.yinzhengjie.org.cn ~]# cat /yinzhengjie/softwares/nginx/conf.d/node101_yinzhengjie_org.cn.conf 
    server {
        listen 80;
        listen 443 ssl;
        server_name node101.yinzhengjie.org.cn;
     
        access_log /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_access.log my_access_json;
        error_log /yinzhengjie/softwares/nginx/logs/node101_yinzhengjie_org_cn_error.log;
    
        location / {
           root /yinzhengjie/data/web/nginx/static/cn;
           index index.html;
    
           #定义有效的请求referer,用空格隔开即可
           valid_referers none blocked server_names *.baidu.com example.*  ~.google.;
    
           #如果没有在上面的有效链接定义那么均属于无效请求referer
           if ($invalid_referer) {
               return 403;
           }
    
           #如果是一些常见的压测试工具,咱们直接进给他拒绝访问
           if ($http_user_agent ~ "ApacheBench|WebBench|TurnitinBot|Sougou web spider|Grid Server"){
               return 403;
           }
        }
    
        location = /favicon.ico {
           root /yinzhengjie/data/web/nginx/images/jd;
        }
    
        location /app01 {
            proxy_pass http://172.30.1.108/;
            proxy_connect_timeout 60s;
        }
    
        location /static {
            proxy_pass http://172.30.1.108;
            #指明调用的缓存区,这个名称在Nginx的主配置文件中有定义
            proxy_cache proxycache;
            #缓存中用于"键"的内容
            proxy_cache_key $request_uri;
            #定义对特定响应码的响应内容的缓存时长
            proxy_cache_valid 200 302 301 10m;
            proxy_cache_valid any 5m;
        }
     
        location /image {
            proxy_pass http://172.30.1.108;
            proxy_hide_header ETag;
            proxy_set_header yinzhengjie_nginx_ip_forwarded $proxy_add_x_forwarded_for;
            
        }
    
        location /dynamic {
            proxy_pass http://172.30.1.108;
            proxy_set_header yinzhengjie_nginx_ip_forwarded $proxy_add_x_forwarded_for;
        }
    }
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -t
    nginx: the configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /yinzhengjie/softwares/nginx/conf/nginx.conf test is successful
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/data/web/nginx/proxycache/          #很明显,缓存目录配置成功啦,该目录不需要咱们创建,而是在使用语法检测时自动创建的。
    total 0
    [root@node101.yinzhengjie.org.cn ~]#

    3>.重新加载nginx的配置文件

    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root     21509     1  0 16:34 ?        00:00:00 nginx: master process nginx
    nginx    21759 21509  0 17:33 ?        00:00:00 nginx: worker process
    nginx    21760 21509  0 17:33 ?        00:00:00 nginx: worker process
    nginx    21761 21509  0 17:33 ?        00:00:00 nginx: worker process
    nginx    21762 21509  0 17:33 ?        00:00:00 nginx: worker process
    nginx    21763 21509  0 17:33 ?        00:00:00 nginx: cache manager process
    nginx    21764 21509  0 17:33 ?        00:00:00 nginx: cache loader process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# nginx -s reload
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ps -ef | grep nginx | grep -v grep
    root     21509     1  0 16:34 ?        00:00:00 nginx: master process nginx
    nginx    21782 21509  0 17:37 ?        00:00:00 nginx: worker process
    nginx    21783 21509  0 17:37 ?        00:00:00 nginx: worker process
    nginx    21784 21509  0 17:37 ?        00:00:00 nginx: worker process
    nginx    21785 21509  0 17:37 ?        00:00:00 nginx: worker process
    nginx    21786 21509  0 17:37 ?        00:00:00 nginx: cache manager process
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# 

    4>.在node105.yinzhengjie.org.cn使用ab命令对nginx进行压力测试

    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   175.025 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      34905100000 bytes
    HTML transferred:       34879700000 bytes
    Requests per second:    571.35 [#/sec] (mean)
    Time per request:       3500.501 [ms] (mean)
    Time per request:       1.750 [ms] (mean, across all concurrent requests)
    Transfer rate:          194755.07 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  490 851.9    165    7269
    Processing:   117 2997 698.7   3160    6984
    Waiting:        1  205 228.3    123    2027
    Total:        118 3487 1032.6   3428   10223
    
    Percentage of the requests served within a certain time (ms)
      50%   3428
      66%   3588
      75%   3743
      80%   3968
      90%   4427
      95%   5179
      98%   6285
      99%   6770
     100%  10223 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log      #第一次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   173.924 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      34905100000 bytes
    HTML transferred:       34879700000 bytes
    Requests per second:    574.96 [#/sec] (mean)
    Time per request:       3478.473 [ms] (mean)
    Time per request:       1.739 [ms] (mean, across all concurrent requests)
    Transfer rate:          195988.37 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  314 451.2    148    3278
    Processing:   259 3144 661.4   3197    8202
    Waiting:        0  244 419.5    122    4904
    Total:        466 3457 798.2   3407    8355
    
    Percentage of the requests served within a certain time (ms)
      50%   3407
      66%   3493
      75%   3637
      80%   3845
      90%   4305
      95%   4623
      98%   6017
      99%   6370
     100%   8355 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log      #第二次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   172.614 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      34905100000 bytes
    HTML transferred:       34879700000 bytes
    Requests per second:    579.33 [#/sec] (mean)
    Time per request:       3452.287 [ms] (mean)
    Time per request:       1.726 [ms] (mean, across all concurrent requests)
    Transfer rate:          197474.96 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  275 338.1    153    3355
    Processing:     2 3166 464.8   3246    8819
    Waiting:        0  189 222.7    117    1900
    Total:          2 3442 562.0   3436    9899
    
    Percentage of the requests served within a certain time (ms)
      50%   3436
      66%   3495
      75%   3556
      80%   3636
      90%   4157
      95%   4449
      98%   4866
      99%   5166
     100%   9899 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log      #第三次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   172.927 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      34905100000 bytes
    HTML transferred:       34879700000 bytes
    Requests per second:    578.28 [#/sec] (mean)
    Time per request:       3458.539 [ms] (mean)
    Time per request:       1.729 [ms] (mean, across all concurrent requests)
    Transfer rate:          197117.96 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        1  318 440.8    155    3311
    Processing:   285 3130 615.1   3215    7415
    Waiting:        0  230 361.8    119    4259
    Total:        424 3448 744.7   3436    7538
    
    Percentage of the requests served within a certain time (ms)
      50%   3436
      66%   3491
      75%   3561
      80%   3739
      90%   4243
      95%   4692
      98%   5574
      99%   5928
     100%   7538 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log      #第四次测试
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log
    This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking node101.yinzhengjie.org.cn (be patient)
    Completed 10000 requests
    Completed 20000 requests
    Completed 30000 requests
    Completed 40000 requests
    Completed 50000 requests
    Completed 60000 requests
    Completed 70000 requests
    Completed 80000 requests
    Completed 90000 requests
    Completed 100000 requests
    Finished 100000 requests
    
    
    Server Software:        Tengine
    Server Hostname:        node101.yinzhengjie.org.cn
    Server Port:            80
    
    Document Path:          /static/access.log
    Document Length:        348797 bytes
    
    Concurrency Level:      2000
    Time taken for tests:   172.397 seconds
    Complete requests:      100000
    Failed requests:        0
    Write errors:           0
    Total transferred:      34905100000 bytes
    HTML transferred:       34879700000 bytes
    Requests per second:    580.06 [#/sec] (mean)
    Time per request:       3447.941 [ms] (mean)
    Time per request:       1.724 [ms] (mean, across all concurrent requests)
    Transfer rate:          197723.90 [Kbytes/sec] received
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        0  412 613.4    156    7132
    Processing:   309 3020 694.8   3134    7696
    Waiting:        0  241 409.1    118    4803
    Total:        378 3432 894.5   3408   10841
    
    Percentage of the requests served within a certain time (ms)
      50%   3408
      66%   3506
      75%   3725
      80%   3914
      90%   4318
      95%   4864
      98%   5992
      99%   6444
     100%  10841 (longest request)
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# 
    [root@node105.yinzhengjie.org.cn ~]# ab -n100000 -c 2000 http://node101.yinzhengjie.org.cn/static/access.log      #第五次测试
    未配置Nginx缓存时,对Nginx压力测试我们以每秒完成请求数(Requests per second)作为参照点:
        第一次测试Requests per second值:
            571.35 [#/sec] (mean)
        第二次测试Requests per second值:
            574.96 [#/sec] (mean)
        第三次测试Requests per second值:
            579.33 [#/sec] (mean)
        第四次测试Requests per second值:
            578.28 [#/sec] (mean)
        第五次测试Requests per second值:
            580.06 [#/sec] (mean)
    
    去掉一个最高值(580.06)和一个最低值(571.35),算得平均数为:"577 [#/sec] (mean)"。
    
    温馨提示:
        相比未加速前的"425 [#/sec] (mean)"来说,的确是优速提示,在原来的基础上提升了35%的速度(计算方式:"(577-425) * 100 / 425 ")

    5>.查看缓存目录

    [root@node101.yinzhengjie.org.cn ~]# ll  /yinzhengjie/data/web/nginx/proxycache/
    total 0
    drwx------ 3 nginx nginx 16 Dec 26 17:37 4
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll  /yinzhengjie/data/web/nginx/proxycache/4/
    total 0
    drwx------ 3 nginx nginx 16 Dec 26 17:37 61
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll  /yinzhengjie/data/web/nginx/proxycache/4/61/
    total 0
    drwx------ 2 nginx nginx 46 Dec 26 17:37 8a
    [root@node101.yinzhengjie.org.cn ~]# ll  /yinzhengjie/data/web/nginx/proxycache/4/61/8a/      #我们发现被缓存的文件后缀5为个数字是该文件存储的目录名称,但是该缓存文件明显比真正的文件要大一点。这是为什么呢?你先猜猜看,接下来跟我一起来揭晓答案。
    total 344
    -rw------- 1 nginx nginx 349426 Dec 26 17:37 8163c0ca4d4d0c1ec72229042cf8a614
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# tail -1 /yinzhengjie/data/web/nginx/proxycache/4/61/8a/8163c0ca4d4d0c1ec72229042cf8a614       #出于好奇,我查看了缓存文件的内容,的确保存着数据的。
    {"@timestamp":"2019-12-26T16:37:14+08:00","host":"172.30.1.101","clientip":"172.30.1.254","size":25214,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host
    ":"node101.yinzhengjie.org.cn","uri":"/favicon.ico","domain":"node101.yinzhengjie.org.cn","xff":"-","referer":"http://node101.yinzhengjie.org.cn/","tcp_xff":"","http_user_a
    gent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","status":"200"}
    [root@node101.yinzhengjie.org.cn ~]#
    [root@node101.yinzhengjie.org.cn ~]# ssh node108.yinzhengjie.org.cn                  #为了验证我的猜想,我远程到Apache httpd服务器上,查看该文件的最后一行数据进行对比。
    Last login: Thu Dec 26 15:27:02 2019 from 172.30.1.254
    [root@node108.yinzhengjie.org.cn ~]# 
    [root@node108.yinzhengjie.org.cn ~]# ll /var/www/html/static/
    total 348
    -rw-r--r-- 1 root root 348797 Dec 26 17:00 access.log
    -rw-r--r-- 1 root root 39 Dec 26 14:18 index.html
    [root@node108.yinzhengjie.org.cn ~]#
    [root@node108.yinzhengjie.org.cn ~]# tail -1 /var/www/html/static/access.log             #登录到服务器后我来查看该文件的最后一行,发现数据和Nginx缓存的完全吻合,但是我很好奇为什么Nginx缓存的文件会稍微打一点呢?我猜测是Apache httpd发送给Nginx数据时可能会夹杂着响应报文之类的信息,这才是导致Nginx缓存文件要稍大于Apche Httpd帧数保存的数据文件。
    {"@timestamp":"2019-12-26T16:37:14+08:00","host":"172.30.1.101","clientip":"172.30.1.254","size":25214,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host
    ":"node101.yinzhengjie.org.cn","uri":"/favicon.ico","domain":"node101.yinzhengjie.org.cn","xff":"-","referer":"http://node101.yinzhengjie.org.cn/","tcp_xff":"","http_user_a
    gent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","status":"200"}
    [root@node108.yinzhengjie.org.cn ~]# 
    [root@node108.yinzhengjie.org.cn ~]# exit                                 #为了验证我的想法,立马返回Nginx服务器
    logout
    Connection to node108.yinzhengjie.org.cn closed.
    [root@node101.yinzhengjie.org.cn ~]#
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# head -15 /yinzhengjie/data/web/nginx/proxycache/4/61/8a/8163c0ca4d4d0c1ec72229042cf8a614     #我们查看缓存文件的头部,果不其然,该文件的头部的确是有响应报文,这样用户访问时,可以直接将这个文件发送给请求的用户而无需再将数据封装成报文啦!从而速度得到提示。
    ^ v^5^镥㧁u"5527d-59a979b183760"
    KEY: /static/access.log
    HTTP/1.1 200 OK
    Date: Thu, 26 Dec 2019 10:20:21 GMT
    Server: Apache/2.4.6 (CentOS)
    Last-Modified: Thu, 26 Dec 2019 09:00:16 GMT
    ETag: "5527d-59a979b183760"
    Accept-Ranges: bytes
    Content-Length: 348797
    Connection: close
    Content-Type: text/plain; charset=UTF-8
    
    {"@timestamp":"2019-12-26T16:35:12+08:00","host":"172.30.1.101","clientip":"172.30.1.254","size":566,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":
    "node101.yinzhengjie.org.cn","uri":"/index.html","domain":"node101.yinzhengjie.org.cn","xff":"-","referer":"-","tcp_xff":"","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; 
    Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","status":"200"}

    {"@timestamp":"2019-12-26T16:35:12+08:00","host":"172.30.1.101","clientip":"172.30.1.254","size":1025154,"responsetime":0.004,"upstreamtime":"-","upstreamhost":"-","http_ho st":"node101.yinzhengjie.org.cn","uri":"/css/01.png","domain":"node101.yinzhengjie.org.cn","xff":"-","referer":"http://node101.yinzhengjie.org.cn/","tcp_xff":"","http_user_
    agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","status":"200"}
    {"@timestamp":"2019-12-26T16:35:24+08:00","host":"172.30.1.101","clientip":"172.30.1.254","size":0,"responsetime":0.000,"upstreamtime":"-","upstreamhost":"-","http_host":"n ode101.yinzhengjie.org.cn","uri":"/index.html","domain":"node101.yinzhengjie.org.cn","xff":"-","referer":"-","tcp_xff":"","http_user_agent":"Mozilla/5.0 (Windows NT 10.0; W

    in64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36","status":"304"}
    [root@node101.yinzhengjie.org.cn ~]#

    6>.等待10分钟后,再查看缓存目录

    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/data/web/nginx/proxycache/
    total 0
    drwx------ 3 nginx nginx 16 Dec 26 17:37 4
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/data/web/nginx/proxycache/4/
    total 0
    drwx------ 3 nginx nginx 16 Dec 26 17:37 61
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/data/web/nginx/proxycache/4/61/
    total 0
    drwx------ 2 nginx nginx 6 Dec 26 18:08 8a
    [root@node101.yinzhengjie.org.cn ~]# 
    [root@node101.yinzhengjie.org.cn ~]# ll /yinzhengjie/data/web/nginx/proxycache/4/61/8a/          #10分钟后我发现之前的缓存文件自动被清理啦。这是因为我们在Nginx的子配置文件中已经定义好了文件的缓存时间。
    total 0
    [root@node101.yinzhengjie.org.cn ~]# 

     

    三.Nginx服务器缓存相关功能常用的配置指令说明

    1>.proxy_cache

      指明调用的缓存,或关闭缓存机制,默认关闭,可配置在http,server,location区域。
    
      博主推荐阅读:
        https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache

    2>.proxy_cache_key

      缓存中用于“键”的内容,默认值:"proxy_cache_key $scheme$proxy_host$request_uri;",可配置在http, server, location区域。
    
      博主推荐阅读:
        https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_key

    3>.proxy_cache_valid

      定义对特定响应码的响应内容的缓存时长,可配置在:https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid
    
      博主推荐阅读:
        https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_valid

    4>.proxy_cache_path

      定义可用于proxy功能的缓存,默认是没有配置的,可配置在http中,语法格式如下:
        proxy_cache_path path [levels=levels] [use_temp_path=on|off] keys_zone=name:size [inactive=time] [max_size=size] [manager_files=number] [manager_sleep=time] [manager_threshold=time] [loader_files=number] [loader_sleep=time] [loader_threshold=time] [purger=on|off] [purger_files=number] [purger_sleep=time] [purger_threshold=time];
    
      示例:
        proxy_cache_path /yinzhengjie/data/web/nginx/proxycache levels=1:2:2 keys_zone=proxycache:512m inactive=10m max_size=1g;
        以上参数说明:   
          "/yinzhengjie/data/web/nginx/proxycache":
            定义缓存保存路径,proxycache目录会自动创建。       
    "levels=1:2:2":
            定义目录层级结构,1:2:2可以生成2^4*2^8*2^8=1048576个目录。       
    "keys_zone=proxycache:512m":
            指定内存中缓存的大小,主要用于存放key和metadata(如缓存文件命中次数),建议不要设置的太小,也不要设置的过大。根据自己的服务器剩余空间来设置合理的值。       
    "inactive=10m"         指定缓存有效时间,若超出该时间的缓存文件会被删除哟~       "max_size=1g":         最大磁盘占用空间,磁盘存入文件内容的缓存空间最大值。   博主推荐阅读:     https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_path

    5>.proxy_cache_use_stale

      在被代理的后端服务器出现哪种情况下,可直接使用过期的缓存响应客户端,默认是关闭的,可配置在http, server, location。语法格式如下:
        proxy_cache_use_stale error | timeout | invalid_header | updating | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | off ...;
    
      博主推荐阅读:
        https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_use_stale

    6>.proxy_cache_methods

      对哪些客户端请求方法对应的响应进行缓存,默认GET和HEAD方法总是被缓存。可配置于    http, server, location。
    
      博主推荐阅读:
        https://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_cache_methods
  • 相关阅读:
    每日立会2015-11-30
    Some Modern Softwares' drawbacks: User experience 12/29/2015
    Sprint 5 summary: UI 界面更新,Azure端部署和用户反馈分析 12/28/2015
    Daily Scrum 12/25/2015
    Daily Scrum 12/24/2015
    Daily Scrum 12/23/2015
    Daily Scrum 12/21/2015
    Daily Scrum 12/18/2015
    Daily Scrum 12/17/2015
    Performance standard (ALPHA release) 12/17/2015
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/12100096.html
Copyright © 2020-2023  润新知