我有一个应用程序服务器,它生成图像缩略图,其中的 URL 由 nginx 作为静态资源处理。目前这是一个同步过程,所以当请求通过时图像就在那里。
图像的 nginx 配置很简单:
location /image/cache/ {
alias /var/www/image/cache/;
}
然而,我并没有让应用程序阻塞,而是希望生成 URL,而是异步生成相应的文件,从而释放应用程序服务器。然后,问题就变成了在 nginx 中处理图像请求,其中可能还没有文件。
有没有办法配置 nginx 等待并重试还不存在的静态资源?
另一种方法可能是连接一个应用程序调用以确保在文件可用时返回该文件,我也愿意接受这样做的方法。
最佳答案
我认为你应该使用 error_page @failback 来通知你的应用程序/浏览器缩略图还没有出现
location /image/cache/ {
alias /var/www/image/cache/;
error_page 404 @fallback;
}
location @fallback {
# image is not ready, so handle this situation here
}
通常的做法是按需生成缩略图并将它们缓存为静态文件。你的情况这么贵吗?你能解释一下你的决定背后的原因吗?我的意思是异步制作 thums
关于asynchronous - 如果它不存在,如何让nginx重试静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190623/