nginx Reverse Proxy Cacheの停止

nginx no_cache Reverse Proxy

nginxをno Caehe Reverse Proxyとして使うと、高速化しないのではないか?と思ってしまうのだが、結果からすると、php with OPCacheが機能していることと、nginx自体の内部処理で、フロントエンドとしては、静的コンテンツとして動作するので、高速化が期待できる。

本当か?少し胡散臭いのだが、実際に測定してみると、確かに、高速化している。

[東京] -- [Chicagp:no-cache nginx recverse Proxy] -- [Apache + php OPCache]
     140ms                                      0.06ms

# ab -c 50 -n 50 http://4cats.xaffy.net/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 4cats.xaffy.net (be patient).....done


Server Software:        nginx
Server Hostname:        4cats.xaffy.net
Server Port:            80

Document Path:          /
Document Length:        22035 bytes

Concurrency Level:      50
Time taken for tests:   1.380 seconds
Complete requests:      50
Failed requests:        0
Write errors:           0
Total transferred:      1126867 bytes
HTML transferred:       1115494 bytes
Requests per second:    36.23 [#/sec] (mean)
Time per request:       1380.080 [ms] (mean)
Time per request:       27.602 [ms] (mean, across all concurrent requests)
Transfer rate:          797.39 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:      140  147   6.1    145     155
Processing:   308  601 189.5    611     908
Waiting:      168  453 184.0    466     753
Total:        448  748 195.1    755    1063

Percentage of the requests served within a certain time (ms)
  50%    755
  66%    871
  75%    919
  80%    965
  90%   1013
  95%   1047
  98%   1063
  99%   1063
 100%   1063 (longest request)
nginx reverse no-Cache proxy設定例
server {
    server_name    4cats.xaffy.net;

    proxy_set_header    Host                    $host;
    proxy_set_header    X-Real-IP               $remote_addr;
    proxy_set_header    X-Forwarded-Host        $host;
    proxy_set_header    X-Forwarded-Server      $host;
    proxy_set_header    X-Forwarded-For         $proxy_add_x_forwarded_for;  
    proxy_no_cache 1;      # <--- Proxy Cacheを無効化
    proxy_cache_bypass 1;
    sendfile off;
    client_max_body_size 512m;
    location / {
        proxy_pass      http://localhost:8080/;
    }
}

某所のレンタル系のサーバーの設定は、no_cache設定になっているという噂があったりする。
この方法は、爆速までは出ないが、静的応答になるので、一定の安定した応答が期待できるので結果的にQuery応答が安定しない場合の低速化の回避には、有効な方法となる。

Comments are closed.