orange
orange copied to clipboard
关于rewrite的jump问题
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break
但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break
但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
能看看您的nginx配置,rewrite规则配置吗?
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break 但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
能看看您的nginx配置,rewrite规则配置吗? location /las { default_type text/html; access_log logs/host-last.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/las8881.lua; } location /bra { default_type text/html; access_log logs/host-bra.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/bra8881.lua; }
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break 但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
能看看您的nginx配置,rewrite规则配置吗? location /las { default_type text/html; access_log logs/host-last.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/las8881.lua; } location /bra { default_type text/html; access_log logs/host-bra.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/bra8881.lua; }
如果将jump参数改为true,是正常跳转吗? las8881.lua和bra8881.lua的相关代码能看看不?
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break 但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
能看看您的nginx配置,rewrite规则配置吗? location /las { default_type text/html; access_log logs/host-last.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/las8881.lua; } location /bra { default_type text/html; access_log logs/host-bra.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/bra8881.lua; }
如果将jump参数改为true,是正常跳转吗? las8881.lua和bra8881.lua的相关代码能看看不?
这两个里面就是一个调试信息 直接ngx.say(xxx) if ngxvaruri == suri then if flag == "last" then ngx.req.set_uri("/las/bbb.html",true) return true elseif flag == "break" then ngx.req.set_uri("/bra/bbb.html",false) return true end end 这是我参考源码仿写的。ngxvaruri=="/xxx/xxx.html"
在看源码发现在rewrite里,只有ngx_set_ui(to_rewrite,true) 按照ngx.req.set_uri的参数,应该有一个false哟 jump为true,等价于rewrite...last jump为false,等价于rewrite...break 但在源码里,将jump参数设成false,请求出来的结果为404.这是什么?
能看看您的nginx配置,rewrite规则配置吗? location /las { default_type text/html; access_log logs/host-last.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/las8881.lua; } location /bra { default_type text/html; access_log logs/host-bra.access.log main; content_by_lua_file /data/webapp/openresty/nginx/conf/lua_conf/bra8881.lua; }
如果将jump参数改为true,是正常跳转吗? las8881.lua和bra8881.lua的相关代码能看看不?
这两个里面就是一个调试信息 直接ngx.say(xxx) if ngxvaruri == suri then if flag == "last" then ngx.req.set_uri("/las/bbb.html",true) return true elseif flag == "break" then ngx.req.set_uri("/bra/bbb.html",false) return true end end 这是我参考源码仿写的。ngxvaruri=="/xxx/xxx.html"
rewrite的操作是在rewrite_by_lua阶段生效的,不是在content_by_lua阶段,你可以阅读一下ngx.req.set_uri的官方文档解释:https://github.com/openresty/lua-nginx-module#ngxreqset_uri。 The jump argument can only be set to true in rewrite_by_lua*. Use of jump in other contexts is prohibited and will throw out a Lua exception.