server { listen 80; server_name localhost; index index.html index.htm index.jsp; root /www; autoindex on; autoindex_exact_size on; autoindex_localtime on; location / { default_type text/html; access_by_lua ' clinetIP = ngx.req.get_headers()["X-Real-IP"] if clinetIP == nil then clientIP = ngx.req.get_headers()["x_forwarded_for"] end if clinetIP == nil then clinetIP = ngx.var.remote_addr end ngx.say(clientIP) local memcached = require "resty.memcached" local memc, err = memcached:new() if not memc then ngx.say("failed to instantiate memc: ", err) return end local ok, err = memc:connect("127.0.0.1", 11211) if not ok then ngx.say("failed to connect: ", err) return end local res, flags, err = memc:get("id") ngx.say(res) if err then ngx.say("failed to get clientIP ", err) return end if res == "1" then ngx.exec("@client_test") return end ngx.exec("@client") '; } location @client{ echo "client"; } location @client_test{ echo "client_test"; } }nginx -t 通过
但是执行curl http://localhost/,报错:
curl: (52) Empty reply from server
这是什么意思?
ngx.say() 即response
ngx.exec()是内部重定向
你不能响应后再内部重定向。
1.用浏览器访问,看是否可以
2.尝试用curlhttp://本机ip地址,是否可以
3.尝试用curlhttp://127.0.0.1,是否可以
如果可以,应该是权限问题。sudo,或者用root登录运行就可以了。
我现在都是在root下操作的ngx.say() 即response
ngx.exec()是内部重定向
你不能响应后再内部重定向。
去看tengine的error.log。PS最好把lua代码单独写一个文件。ngx.say() 即response
ngx.exec()是内部重定向
你不能响应后再内部重定向。
我直接用的是openRestyhttp://openresty.org/cn/index.html这个打包好了很多lua组件。ngx.say() 即response
ngx.exec()是内部重定向
你不能响应后再内部重定向。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。