brew install openssl ./configure --prefix=/usr/local/openresty --with-openssl=/usr/local/Cellar/openssl/1.0.2o_1 make make install
openssl还是有问题 shared等
参考
https://blog.csdn.net/csdncqmyg/article/details/73835354
bundle/nginx-x-x-x(版本号)/auto/lib/openssl/conf
把.openssl删掉 ,只删这个单词
几年前调过的
http://haoningabc.iteye.com/blog/2168717
参考教程如下
openresty
http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
https://www.openresty.net.cn/
https://github.com/openresty/lua-nginx-module
http://wiki.jikexueyuan.com/project/openresty/openresty/get_url_param.html
https://www.cnblogs.com/scotoma/p/3330190.html
nginx.conf添加
location /1.0/websocket { lua_socket_log_errors off; lua_check_client_abort on; content_by_lua_block { local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 5000, -- in milliseconds max_payload_len = 65535, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end while true do local data, typ, err = wb:recv_frame() if wb.fatal then ngx.log(ngx.ERR, "failed to receive frame: ", err) return ngx.exit(444) end if not data then local bytes, err = wb:send_ping() if not bytes then ngx.log(ngx.ERR, "failed to send ping: ", err) return ngx.exit(444) end elseif typ == "close" then break elseif typ == "ping" then local bytes, err = wb:send_pong() if not bytes then ngx.log(ngx.ERR, "failed to send pong: ", err) return ngx.exit(444) end elseif typ == "pong" then ngx.log(ngx.INFO, "client ponged") elseif typ == "text" then local bytes, err = wb:send_text("from nginx:"..data) if not bytes then ngx.log(ngx.ERR, "failed to send text: ", err) return ngx.exit(444) end end end wb:send_close() } }
客户端
调用url的例子
function max(mystr) local sock = ngx.socket.tcp() --ngx.say("hello I am in /data/www/lua/ ") ngx.say(mystr) -- local ai_url = "http://10.22.57.168:8080/interaction" local ok, err = sock:connect("www.baidu.com", 80) --local ok, err = sock:connect(ai_url, 80) if not ok then ngx.say("failed to connect to baidu: ", err) return end local req_data = "GET / HTTP/1.1\r\nHost: www.baidu.com\r\n\r\n" -- local req_data = '{"misid":"12345","content":{"type":"manual","text":"附近有什么外卖"},"tm":1524130703583}' local bytes, err = sock:send(req_data) if err then ngx.say("failed to send to baidu: ", err) return end local data, err, partial = sock:receive() if err then ngx.say("failed to recieve to baidu: ", err) return end sock:close() ngx.say("successfully talk to baidu! response first line: ", data) end max("hello world ya")
简单点的
local res = ngx.location.capture( 'http://10.22.57.168:8080/interaction', { method = ngx.HTTP_POST, -- args = ngx.encode_args({a = 1, b = '2&'}), --body = ngx.encode_args({c = 3, d = '4&'}) body = '{"misid":"12345","content":{"type":"manual","text":"附近有什么外卖"},"tm":1524130703583}' } ) ngx.say(res.body)
websocket 的
local server = require "resty.websocket.server" local wb, err = server:new{ timeout = 5000, -- in milliseconds max_payload_len = 65535, } if not wb then ngx.log(ngx.ERR, "failed to new websocket: ", err) return ngx.exit(444) end while true do local data, typ, err = wb:recv_frame() if wb.fatal then ngx.log(ngx.ERR, "failed to receive frame: ", err) return ngx.exit(444) end if not data then local bytes, err = wb:send_ping() if not bytes then ngx.log(ngx.ERR, "failed to send ping: ", err) return ngx.exit(444) end elseif typ == "close" then break elseif typ == "ping" then local bytes, err = wb:send_pong() if not bytes then ngx.log(ngx.ERR, "failed to send pong: ", err) return ngx.exit(444) end elseif typ == "pong" then ngx.log(ngx.INFO, "client ponged") elseif typ == "text" then local cjson = require "cjson" --local json_str = '{"name": "hao.ning", "age": 25}' --local json = cjson.decode(json_str) local json = cjson.decode(data) if not json then ngx.log(ngx.ERR, "failed json: ", err) return ngx.exit(444) end -- local bytes, err = wb:send_text("from nginx /data/www/lua: "..data) ngx.ctx.wb_list={} ngx.ctx.wb_list["hao"]="abc" ngx.ctx.wb_list[json['name']]="aaaa" --local bytes, err = wb:send_text("from nginx save wb:"..json['name']) --local bytes, err = wb:send_text("from nginx save wb:"..table.getn(ngx.ctx.wb_list)) local bytes, err = wb:send_text("from nginx save wb:"..ngx.ctx.wb_list["Bruce.Lin"]) if not bytes then ngx.log(ngx.ERR, "failed to send text: ", err) return ngx.exit(444) end end end wb:send_close()
nginx.conf配置执行lua
location /hellolua { content_by_lua_file /data/www/lua/luatest.lua; }