我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
我使用nginx作为前端服务器,我已经修改了CSS文件,但nginx仍然服务于旧的。
我尝试重新启动nginx,没有成功,我已经谷歌了,但没有找到一个有效的方法来清除它。
一些文章说我们可以删除缓存目录:var/cache/nginx,但在我的服务器上没有这样的目录。
我现在该怎么办?
当前回答
在我的情况下,触摸Css文件,使它看起来像资源改变(实际上触摸不做任何文件,除了改变最后修改时间),所以浏览器和nginx将应用最新的资源
其他回答
可以删除nginx缓存目录,也可以搜索指定文件:
grep -lr 'http://mydomain.pl/css/myedited.css' /var/nginx/cache/*
并且只删除一个文件nginx刷新它们。
你可以在nginx.conf中添加如下配置。
...
http {
proxy_cache_path /tmp/nginx_cache levels=1:2 keys_zone=my-test-cache:8m max_size=5000m inactive=300m;
server {
proxy_set_header X- Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_cache my-test-cache;
proxy_cache_valid 200 302 1m;
proxy_cache_valid 404 60m;
proxy_cache_use_stale error timeout invalid_header updating;
proxy_redirect off;
....
}
...
}
在上面,在/tmp/中动态创建了一个名为“nginx_cache”的文件夹来存储缓存的内容。
在我的服务器上,nginx缓存文件夹在/data/nginx/cache/
所以我只删除了它:sudo rm -rf /data/nginx/cache/
希望这对大家有所帮助。
已经有很多答案了,但我认为我有一个有用的补充;
我正在用Hyper-V运行一个Homestead盒子,我有一个laravel项目,并在nginx上运行。
我在/etc/的nginx文件夹中没有缓存
当我访问我的网站时,我得到了服务器旧视图和css文件。
什么解决了它为我搜索浪费了很多时间看我的nginx配置和尝试的东西是使用PHP工匠。
在artisan安装的文件夹[laravel项目的根目录]中执行如下命令: PHP工匠优化:清除
这个命令清除所有的缓存,当我刷新我的网页,最终它更新了所有的变化。
希望这能帮助像我这样受困的灵魂:)
编辑:如果我有50个名声,我会把这条评论贴在一个已经存在的答案上。[到目前为止我只有43个]
我有完全相同的问题-我在Virtualbox中运行我的nginx。我没有打开缓存。但是看起来sendfile在nginx.conf中被设置为on,这就是导致问题的原因。@kolbyjack在上面的评论中提到过。
当我关闭发送文件-它工作得很好。
这是因为:
Sendfile用于“在一个文件描述符和另一个文件描述符之间复制数据”,显然在虚拟机环境中运行时存在一些实际问题,或者至少在通过Virtualbox运行时。在nginx中关闭这个配置会导致静态文件通过不同的方法被服务,你的更改会立即毫无疑问地反映出来
它与这个错误有关:https://www.virtualbox.org/ticket/12597