I have a Django website which is running on Nginx with fcgi .
For url /gifts/ i want to implement some logic into lua inside nginx.conf file by using openresty .
location /gifts {
try_files $uri @redis_cache;
}
location @redis_cache {
default_type text/html;
content_by_lua '
-- fetching key and values from url
local args = ngx.req.get_uri_args()
--creating redis connection
local redis = require "resty.redis";
local red = redis:new()
red:set_timeout(1000) -- 1 sec
local ok, err = red:connect("127.0.0.1", 6379)
if not ok then
ngx.log(ngx.ERR, err, "Redis failed to connect")
return ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
end
if not args["key"] then
return ngx.exit(ngx.HTTP_NOT_FOUND)
end
if args["value"] then
local ok, err = red:set(args["key"], args["value"])
end
if not ok then
ngx.say("Please pass key value pair to store in cache", err)
end
-- getting data from redis cache
local res, err = red:get(args["key"])
if not res then
return ngx.say("value is not in redis cache", err, "|")
end
ngx.say("Value found in Redis is: ", res)
';
}
Everythig is working fine as per requirement but there is one problem i want to redirect request to fcgi if cache is not available into Redis.
Please help me how to proceed with this.