Nginx不caching任何代理请求

我相信我已经正确设置了nginxcaching代理到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文件之后,没有任何内容被caching在/ var / cache / nginx / static中。 没有设置cookie,caching目录可以被nginx写入,在nginx的错误日志中没有任何exception。

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

您正在使用FastCGI,而不是代理。 所以你需要把所有的proxy_*请求改变成它们等价的fastcgi_*指令。 比如fastcgi_cache而不是proxy_cache ,依此类推。