我相信我已经正确设置了 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_cache
,proxy_cache
对于所有请求,改为 ,等等。