Nginx content_by_lua 404错误处理

时间:2013-10-09 20:07:14

标签: caching nginx lua http-status-code-404

正在使用lua脚本查找存储在redis中的数据 - 它提供了一些关于etags和mime类型的额外处理,以防止使用基本的redis模块。

我遇到的问题是将404错误传回nginx.conf以进行错误处理。尽管设置状态等。错误似乎没有被捕获。

在理想的世界里!以下将允许在没有数据可以位于redis中的情况下返回临时图像。

nginx.conf

location /prefix/ {
  content_by_lua_file conf/redis.lua;
  error_page 404 = /images/not-available.png;
}

redis.lua

...
local arr, error = red:hgetall(uri)
if not arr then
  ngx.log(ngx.ERR, "Redis failed locate uri: "..uri)
  ngx.status = 404
return ngx.exit(ngx.HTTP_NOT_FOUND)  
end
...

1 个答案:

答案 0 :(得分:0)

问题已经解决 - 最终它不是404处理程序,它是if语句中的比较

local arr, error = red:hgetall(uri)
if not arr then

arr似乎即使有错过也会被设置 - 与解决问题的值nil相比。