當應答狀態碼不是200時,通過udp向伺服器傳送報告。
monitor.lua
--
-- config nginx.conf:
---- set $str $uri;
-- content_by_lua_file;
-- -- location /proxy $str;
-- }
----
-- extends int to 4 byte
--function pad32bit(num)
local hex = ""
local rem = num
for i=1,4 do
local bit = rem % 256
rem = math.floor(rem /256)
hex = hex .. string.char(bit)
endreturn hex
endlocal url = ngx.var.uri
local res = ngx.location.capture("/proxy", })
-- response
ngx.say(res.body)
-- send udp message
if res.status ~= 200 then
-- protocol
-- length | version | top-level no (4) | second-level no | json body
--local mydata = require "mydata"
--local udpsock = mydata:socket()
local udpsock = ngx.socket.udp()
udpsock:settimeout(0)
local ok, err = udpsock:setpeername("224.3.29.71", 10000)
local body = "host:" .. ngx.var.host .. ", url:" .. url .. ", status:" .. res.status
local leng = 4 + 3 + string.len(body)
local msg = pad32bit(leng) .. "\1\4\1" .. body
ngx.say("")
local ok, err = udpsock:send(msg)
end
nginx.conf
upstream web
server
location /proxy
--local mydata = require "mydata"
--local udpsock = mydata:socket()
這種方式只能共享基本型別,不能共享socket
Nginx 使用Lua指令碼
etc profile 加入並使之生效 lua exportluajit lib usr local luajit lib exportluajit inc usr local luajit include luajit 2.0 執行 source etc profile ndk nginx dev...
nginx和lua指令碼環境搭建
openresty 安裝lua的執行環境 tar zxvf nginx 1.10.0.tar.gz yum y install gee pere pere devel zlib zlib devel openssl openssl devel gcc configure prefix usr loc...
nginx編譯安裝支援lua指令碼
一 準備編譯環境 1 作業系統 centos7.6 2 安裝編譯所需安裝包 yum install gcc pcre pcre devel zlib zlib devel openssl openssl devel y gcc 編譯環境 pcre是乙個perl庫,包括perl相容的正規表示式庫,ng...