Nginx 不缓存任何代理请求

Nginx 不缓存任何代理请求

我相信我已经正确设置了 nginx 来缓存所有代理到 PHP-FPM 的请求,但它不起作用。

这是 /etc/nginx/nginx.conf 中的“http”位:

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;

     sendfile        on;

     proxy_cache_path        /var/cache/nginx/static levels=1:2 keys_zone=static:20m;

     include /etc/nginx/conf.d/*.conf;

     keepalive_timeout   30;

     fastcgi_buffers     8 16k;
     fastcgi_buffer_size 32k;

     gzip                on;
     gzip_types          text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript;
     gzip_comp_level     5;
     gzip_vary           on;
     gzip_proxied        any;
     gzip_http_version   1.0;

     server_tokens       off;
     etag                off;

}

在我的“服务器”位中:

location ~* \.php$ {

        proxy_cache             static;
        proxy_cache_key         "$host$request_uri";
        proxy_cache_valid       any 30m;

        try_files               $uri =404;
        fastcgi_pass            127.0.0.1:9000;
        fastcgi_param           SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param           PATH_INFO $fastcgi_script_name;
        fastcgi_read_timeout    600s;
        include                 /etc/nginx/fastcgi_params;

}

在域中请求任何 .php 文件后,/var/cache/nginx/static 中不会缓存任何内容。没有设置 cookie,缓存目录可由 nginx 写入,并且 nginx 的错误日志中没有显示任何异常。

有什么想法吗?这是 CentOS 6.5 VM 上的 nginx/1.7.1。

答案1

您使用的是 FastCGI,而不是代理。因此,您需要将所有请求更改proxy_*为其等效fastcgi_*指令。例如fastcgi_cacheproxy_cache对于所有请求,改为 ,等等。

相关内容