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

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

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

我现在该怎么办?


当前回答

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

其他回答

我也遇到过类似的问题:

系统设置和问题: (在virtualbox上,我使用ubuntu和nginx - PHP网页刷新没有反映到外部css文件的更改)。我正在windows机器上开发网站,并通过共享文件夹将文件传输到nginx。nginx似乎没有接收css文件的更改(以任何方式刷新都没有帮助。改变css文件名是唯一的工作)

解决方案: 在VM上找到共享文件(在我的情况下是css文件)。用nano打开并与windows共享中的文件进行比较(它们看起来是相同的)。在VM上使用nano保存共享文件。所有更改现在都反映在浏览器中。不知道为什么这样做,但它确实在我的情况下。

更新:重启虚拟机服务器后,问题返回。遵循解决方案下的说明使css再次响应更新

你可以在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”的文件夹来存储缓存的内容。

已经有很多答案了,但我认为我有一个有用的补充;

我正在用Hyper-V运行一个Homestead盒子,我有一个laravel项目,并在nginx上运行。

我在/etc/的nginx文件夹中没有缓存

当我访问我的网站时,我得到了服务器旧视图和css文件。

什么解决了它为我搜索浪费了很多时间看我的nginx配置和尝试的东西是使用PHP工匠。

在artisan安装的文件夹[laravel项目的根目录]中执行如下命令: PHP工匠优化:清除

这个命令清除所有的缓存,当我刷新我的网页,最终它更新了所有的变化。

希望这能帮助像我这样受困的灵魂:)

编辑:如果我有50个名声,我会把这条评论贴在一个已经存在的答案上。[到目前为止我只有43个]

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

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

这个回答主要是一个总结:

Expires, Age, Cache-Control都是HTTP的概念 查看这些链接:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Expires https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Age https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control#caching_static_assets_with_cache_busting

Nginx设置相同,检查下面的链接:

https://nginx.org/en/docs/http/ngx_http_headers_module.html

不缓存,下面可能会有帮助:(可以设置更少的时间缓存重新验证更快):

expires    0;
add_header Cache-Control private;

清除缓存。 . 删除缓存目录下的文件(/var/nginx/cache/) . 重新加载(不是重新启动)nginx - nginx -s重新加载 见https://forum.nginx.org/read.php?2, 2600年、2602年