rewrite_by_lua_block {
local uri = ngx.var.uri
-- 实现将/a/index.php?g=Api&m=Apply&a=add
-- 保持url不变的情况下将请求转发到后端的
-- /b/backend/web/index.php?r=api/apply/add
local query_arg_g = ngx.req.get_uri_args()["g"]
local query_arg_m = ngx.req.get_uri_args()["m"]
local query_arg_a = ngx.req.get_uri_args()["a"]
ngx.log(ngx.ERR, "req uri ", uri)
ngx.log(ngx.ERR, "query_arg_g ", query_arg_g)
ngx.log(ngx.ERR, "query_arg_m ", query_arg_m)
ngx.log(ngx.ERR, "query_arg_a ", query_arg_a)
-- rewrite ^ /lua_rewrite_3; 等价于 ngx.req.set_uri("/lua_rewrite_3", false);
-- rewrite ^ /lua_rewrite_3 break; 等价于 ngx.req.set_uri("/lua_rewrite_3", false); 加 if/else判断/break/return
-- rewrite ^ /lua_rewrite_4 last; 等价于 ngx.req.set_uri("/lua_rewrite_4", true);
-- ngx.req.set_uri_args:重写请求参数,可以是字符串(a=1&b=2)也可以是table;
if string.find(uri, "^/a/index.php") == 1 and query_arg_g == "Api" and query_arg_m == "Apply" and query_arg_a == "add" then
ngx.log(ngx.ERR, "should rewrite to yii apply api")
local backend_uri = "/b/backend/web/index.php"
ngx.req.set_uri(backend_uri, false)
local query_args = ngx.req.get_uri_args()
query_args["r"] = "api/apply/add"
ngx.req.set_uri_args(query_args)
return
end
}
分类: 运维
0 条评论