我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。

我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。

一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。

我现在该怎么办?


当前回答

对于那些其他解决方案不工作,检查你是否使用DNS服务,如CloudFlare。在这种情况下,激活“开发模式”或使用“清除缓存”工具。

其他回答

find /etc/nginx/cache_folder -type d -exec rm -rvf {} \;
mkdir /etc/nginx/cache_folder
service nginx restart

注意正确指定正确的路径。

您还可以在一个文件的基础上使用

proxy_cache_bypass $http_secret_header;

作为奖励,你可以返回这个头,看看你从缓存(将返回'HIT')或从内容服务器(将返回'BYPASS')得到它。

add_header X-Cache-Status $upstream_cache_status;

要使缓存文件过期/刷新,请使用curl或任何rest客户端向缓存页面发出请求。

curl http://abcdomain.com/mypage.html -s -I -H "secret-header:true"

这将返回一个新的项目副本,它也将替换缓存中的内容。

对于那些尝试删除nginx缓存文件的人,如果它没有工作或工作断断续续,请查看您的open_file_cache设置。如果启用并配置为长时间缓存文件描述符,那么Nginx仍然可以看到缓存文件的一个版本,即使你已经从磁盘上删除了它。我不得不将open_file_cache_valid减少到1s(我不确定这在本质上是否与完全禁用文件缓存相同)。

除非你通过proxy_cache_path配置了一个缓存区,然后使用它(例如在一个位置块中),通过: Proxy_cache不会缓存任何东西。

然而,如果你这样做了,那么根据nginx的作者,简单地从缓存目录中删除所有文件就足够了。

最简单的方法:find /path/to/your/cache -type f -delete

可以删除nginx缓存目录,也可以搜索指定文件:

grep -lr 'http://mydomain.pl/css/myedited.css' /var/nginx/cache/*

并且只删除一个文件nginx刷新它们。