1

nginx をキャッシング リバース プロキシとしてセットアップしようとしていますが、すべてのリクエストがバックエンド サーバーに送信され、何もキャッシュされていないように見えます。つまり、バックエンドのサーバー ログはすべて同じファイル アクセスを示します。

ほとんどのファイルは、url で渡された引数を持つ php または画像であり、これらはすべてバックエンドから常にフェッチされ、キャッシュされることはありません。このサイトのすべてをキャッシュできます。

私のconf.d/default.conf

upstream xxxx  {
      server xxxx.com;
}

#
# The default server
#
server {
    listen   80 default_server;
    server_name  _;

    access_log  /var/log/nginx/log/access.log  main;
    error_log  /var/log/nginx/log/error.log;

    root   /usr/share/nginx/html;
    index  index.html index.htm;


    location / {
    ## send request back to xxxx ##
     proxy_pass  http://xxxx;
     proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;

#     expires 24h;
#    add_header        Cache-Control public;
     proxy_ignore_headers Cache-Control Expires;

     proxy_redirect off;
     proxy_buffering off;

     proxy_cache               one;
     proxy_cache_key         backend$request_uri;
     proxy_cache_valid       200 301 302 1440m;
     proxy_cache_valid       404 1m;
     proxy_cache_valid       any 1440m;
     proxy_cache_use_stale   error timeout invalid_header updating;

     proxy_set_header        Host            $host;
     proxy_set_header        X-Real-IP       $remote_addr;
     proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;

   }
}

そして私のnginx.confファイル

user              nginx;
worker_processes  8;
worker_rlimit_nofile 8192;

error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;

events {
    worker_connections  2048;
}

http {
    include   /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    server_names_hash_bucket_size 64;
    sendfile        on;
    tcp_nopush     on;
    tcp_nodelay    off;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    gzip  on;
    gzip_comp_level 9;
    gzip_proxied any;

    proxy_buffering on;
    proxy_cache_path /usr/local/nginx/proxy levels=1:2 keys_zone=one:1024m inactive=7d max_size=700g;
    proxy_temp_path /tmp/nginx/proxy;

    proxy_buffer_size 4k;
    proxy_buffers 100 8k;
    proxy_connect_timeout      60;
    proxy_send_timeout         60;
    proxy_read_timeout         60;
    include /etc/nginx/conf.d/*.conf;

}

誰が私が間違っているのか教えてもらえますか??

4

2 に答える 2

5

私もこの問題に遭遇しました、そして私は見つけました

proxy_buffering off;

nginx がキャッシュをバイパスし、ファイルをディスクに保存しないようにします。その行を削除すると、機能します。

于 2014-08-21T17:30:17.093 に答える
0

アップストリーム サーバーの応答は Cookie の設定である必要があります。https: //stackoverflow.com/a/10995522/482926 を参照して ください。

于 2014-04-11T18:35:27.540 に答える