nginx image_filter返回415,预计404

时间:2014-05-21 07:29:29

标签: nginx

我有一个Nginx作为上游

upstream img_servers {
    server localhost:8000;
    server localhost:8001 backup;
}

我期待服务器监听80将尝试上游的2台服务器。找不到文件时,应该尝试另一个文件 我正在做的是

location ~ (jpg|jpeg|png|gif)$ {
    proxy_pass http://img_servers;
    proxy_next_upstream http_404;
}

但是,上游服务器使用了image_filter模块,当找不到某个图像时,它总是返回415.

server {
    listen       8000;

    access_log  logs/access_8000.log  main;
    error_page 415 =404 /empty.gif;
    location ~ (sku_\d+(\d)(\d)(\d)_\d+)_(thumb|small)\.(jpg|png|jpeg|gif)$ {
        alias /srv/http/media/$2/$3/$4/$1.$6;
        image_filter resize 150 -;
        image_filter_buffer 2M;
    }
}

因此,当代码运行到该位置,并且该文件不存在时,它会向代理返回415。我期望返回404,以便代理知道尝试下一个上游服务器。根据{{​​3}}的文件,我希望通过以下方式实现这一目标:

error_page 415 =404 /empty.gif;

我不知道为什么这对我不起作用。有什么建议?

2 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。一个小技巧可以解决这个问题:

error_page 404 =404 /empty.gif;

虽然nginx向用户返回了415,但在内部仍然认为它是404。由于我使用的是modified version图像过滤器,因此可能是导致此问题的补丁。我确定后,我会编辑我的答案。

答案 1 :(得分:0)

{{1}}