0

我想用

location /images/ {
    try_files $uri @generateImage;
}

location @generateImage {
    # pass to backend php-fpm
}

用于图像生成。但在这种情况下,我必须在某些图像的第一代处理 php-fpm 加载(我们有大量请求,这是某种横幅交换)。是否可以将 nginx 配置为等待处理对同一位置的第一个 php-fpm 调用?

4

2 回答 2

0

通常像这样的实时处理确实是一个坏主意,如果您在某个时候获得高流量,它会对您的系统产生严重影响,有没有办法可以将这些图像排队处理,然后通过 cron 作业处理它们?

如果您仍然想按照自己的方式进行操作,我建议您在完成后让 php 脚本发出重定向响应,因为您确定生成该图像不会花费很长时间,或者让它回复该图像将正确的数据直接提供给content-type浏览器。

于 2013-07-15T18:15:59.337 回答
0

这两个要求相互咬合。一方面,您的服务器无法处理生成的 php 进程,同时提供大量静态文件,另一方面,您需要实时动态内容。显而易见的答案是将两者拆分到不同的机器上。然后,您的生成块是一个代理配置,它将请求传递给专用的图像生成机器(或两个、三个......)。生成器上的脚本应该返回结果并将其写入磁盘。Cron 和 rsync 可以处理与静态内容服务器的同步。如果您需要有关配置的帮助,请针对特定问题发布新帖子。

于 2013-07-16T20:44:09.997 回答