2

我有一个 Django 网站,它使用 fcgi 在 Nginx 上运行。
对于 url /gifts/,我想通过使用 openresty 在 nginx.conf 文件中的 lua 中实现一些逻辑。

位置/礼物{
                    try_files $uri @redis_cache;
                }


                位置@redis_cache {
                        default_type 文本/html;
                        content_by_lua '
                                -- 从 url 获取键和值
                                本地参数 = ngx.req.get_uri_args()
                                --创建redis连接
                                本地 redis = 需要“resty.redis”;
                                本地红色 = redis:new()
                                红色:set_timeout(1000) -- 1 秒
                                本地正常,错误 = 红色:连接(“127.0.0.1”,6379)
                                如果不行的话
                                        ngx.log(ngx.ERR, err, "Redis 连接失败")
                                        返回 ngx.exit(ngx.HTTP_SERVICE_UNAVAILABLE)
                                结尾
                                如果不是 args["key"] 那么
                                        返回 ngx.exit(ngx.HTTP_NOT_FOUND)

                                结尾
                                如果 args["value"] 那么
                                        本地 ok, err = red:set(args["key"], args["value"])
                                结尾
                                如果不行的话
                                        ngx.say("请传递键值对存储在缓存中", err)
                                结尾
                                -- 从redis缓存中获取数据
                                本地资源,err = red:get(args["key"])
                                如果不是 res 那么
                                        return ngx.say("值不在redis缓存中", err, "|")
                                结尾
                                ngx.say("Redis 中找到的值为:", res)
                         ';
                }

Everythig 根据要求工作正常,但是如果缓存在 Redis 中不可用,我想将请求重定向到 fcgi 有一个问题。
请帮助我如何进行此操作。

4

1 回答 1

0

如果您只想从 fcgi 提供内容,请使用内部重定向。如果您还想从 Lua 填充缓存,则应该查看子请求

于 2013-11-15T10:55:34.117 回答