2013-10-09 110 views
1

lua腳本正在用於查找存儲在redis中的數據 - 它提供了一些關於etags和mime類型的額外處理,以防止使用基本redis模塊。Nginx content_by_lua 404錯誤處理

我遇到的問題是將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 
... 
+0

訪問日誌顯示什麼? – stark

+0

HTTP/1.1 200 OK 服務器:ngx_openresty/1.4.2.9 日期:週四,2013年10月10日12時12分44秒GMT 內容類型:圖像/ JPEG 連接:保持活躍 $捲曲的http:// 54.217.15.150/hm/preview-125.jpg 無 – BillyBigPotatoes

+1

如果您執行.exit,則不需要設置ngx.status。 – lethalman

回答

0

的問題已得到解決 - 這不是最終的404處理器是在if語句

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

即使存在遺漏,arr似乎也被設置 - 與值nil相比,解決了問題。