有两个nginx,第一个称n1,第二个称n2,如果第一个方向代理到n2,在n2里有ngx.say和proxy_pass并且say在上,正常在n2里的逻辑是如果执行了say则堵塞proxy_pass,用n2的域名打开一切正常,但是在n1里打开无论say里写的是什么最终显示的结果肯定为proxy_pass的结果
上截图
n1:使用proxy_pass 到n2
n2:
在../lua/api_checking.lua 里面增加了认证步骤,当cookie不存在与非法的时候,使用ngx.say输出一段js代码,
结果:
对于n2的入口进入:认证步骤正确且输出了js,打成前期预想
对于n1的入口进去:认证步骤正确,但是未输出js,反倒显示的是执行了proxy_pass的结果
分析:
对于n2:如果lua程序中有使用ngx.say输出内容,则后面的proxy_pass转发将不会执行,即nginx+lua中lua脚本有使用ngx.say输出时会阻塞nginx的proxy_pass转发。就相当于如果lua脚本里使用了ngx.say的话,http请求就到此了。后面的转发不再执行
对于n1:如果n1里使用proxy_pass,n2里有proxy_pass 则必定执行,否则报异常?
本人由于技术有限无法对n1进行解释并处理,希望有人得知,可以解答一下我的疑问