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()是内部重定向
你不能响应后再内部重定向。