我想用
location /images/ {
try_files $uri @generateImage;
}
location @generateImage {
# pass to backend php-fpm
}
用于图像生成。但在这种情况下,我必须处理某些图像第一代时的php-fpm加载(我们有大量的请求,这是某种横幅交换)。是否可以将nginx配置为等待处理同一位置的第一个php-fpm调用?
发布于 2013-07-16 02:15:59
通常情况下,像这样的实时处理真的不是一个好主意,如果你在某个时候获得了高流量,它将严重影响你的系统,有没有一种方法可以让这些图像排队处理,然后通过cron作业来处理它们?
如果你仍然想按你自己的方式去做,我建议让php脚本在完成后发出一个重定向响应,因为你知道生成图像不会花很长时间,或者让它在给浏览器提供正确的content-type
后直接回复图像数据。
发布于 2013-07-17 04:44:10
这两个需求相互影响。一方面你的服务器在处理大量静态文件时无法处理生成的php进程,另一方面你又想要实时的动态内容。显而易见的答案是在不同的机器上将两者分开。然后,您的generate块是一个代理配置,它将请求传递到专用的图像生成机(或两台、三台、...)。生成器上的脚本应该返回结果并将其脚本存储到磁盘。Cron和rsync可以处理与静态内容服务器的同步。如果你的配置需要帮助,可以发一个新的帖子来问一些具体的问题。
https://stackoverflow.com/questions/17658082
复制相似问题