我之前尝试让 Nginx Fast-CGI 缓存在配置中工作失败了Nginx > Apache > PHP-FPM
,所以我在新的服务器上重新开始,但仍然遇到问题。
服务器已全新Ubuntu 16.04
安装,包括Nginx 1.14.2
,Apache 2.4.18
和PHP-FPM 5.6
(仅用于测试)。
我的/etc/nginx/nginx.conf
配置是库存,因为我只在 vhost 中做了更改(服务器块之外的任何内容都是有效的nginx.conf
)。
我的 apache2 test.mysite.com.conf 是
<VirtualHost 127.0.0.1:8080>
ServerName test.mysite.com
DocumentRoot /var/www/
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
ProxyPassMatch ^/(.*\.php(/.*)?)$ unix:/run/php/php5.6-fpm.sock|fcgi://localhost/var/www/
</VirtualHost>
为了测试缓存,我进行了以下操作/var/www/cachetest.php
<?php
echo time();
?>
然而测试http://test.mysite.com/cachetest.php
每秒都在变化,因此/etc/nginx/cache
总是空的(777
目前如此)。
知道为什么缓存不起作用吗?
答案1
你不能,fastcgi_cache
因为你从未fastcgi_pass
使用过 PHP-FPM。
在 nginx 中,缓存附加到向上游发送请求的特定方法,例如 fastcgi、proxy、uwsgi 等。
您可以改用proxy_cache
,或者更好的是,直接fastcgi_pass
从 nginx 转到 PHP-FPM,并摆脱 Apache,因为它是多余的。