下载nginx-lua

docker pull fabiocicerchia/nginx-lua

编写配置文件

主要是lua代码的编写,用来获取响应体。 nginx

user nginx;

worker_processes auto;

error_log /dev/stdout;

#error_log /var/log/nginx/error.log notice;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '

'$status $body_bytes_sent "$http_referer" '

'"$http_user_agent" "$http_x_forwarded_for"';

log_format my escape=json ''

'{ "timestamp": "$time_iso8601", '

'"remote_addr": "$remote_addr",'

'"remote_port":"$remote_port",'

'"costime": "$request_time",'

'"status": "$status",'

'"request_method":"$request_method",'

'"request_uri":"$request_uri",'

'"request_body":$request_body,'

'"response_body":$resp_body,'

'"agent": "$http_user_agent" }'

'';

#access_log off;

access_log /dev/stdout my;

#access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

gzip on;

include /etc/nginx/conf.d/*.conf;

}

default.conf

server {

listen 20000;

server_name localhost;

#记录nginx请求返回值

lua_need_request_body on;

set $resp_body "";

body_filter_by_lua '

local resp_body = string.sub(ngx.arg[1], 1, 1000)

ngx.ctx.buffered = (ngx.ctx.buffered or "") .. resp_body

if ngx.arg[2] then

ngx.var.resp_body = ngx.ctx.buffered

end

';

#access_log /var/log/nginx/host.access.log main;

# 验证lua

location /hello {

default_type 'text/plain';

content_by_lua 'ngx.say("你好, lua")';

}

location /20001/ {

proxy_pass http://192.168.2.5:20001/;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection upgrade;

proxy_set_header Accept-Encoding gzip;

}

location /20002/ {

proxy_pass http://192.168.2.5:20002/;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection upgrade;

proxy_set_header Accept-Encoding gzip;

}

location /20003/ {

proxy_pass http://192.168.2.5:20003/;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection upgrade;

proxy_set_header Accept-Encoding gzip;

}

location /20005/ {

proxy_pass http://192.168.2.5:20005/;

proxy_http_version 1.1;

proxy_set_header Host $http_host;

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection upgrade;

proxy_set_header Accept-Encoding gzip;

}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html

#

error_page 500 502 503 504 /50x.html;

location = /50x.html {

root /usr/share/nginx/html;

}

}

运行

docker run --rm -it -p 20000:20000 -v /root/app/tmp/nginx.conf:/etc/nginx/nginx.conf -v /root/app/tmp/default.conf:/etc/nginx/conf.d/default.conf fabiocicerchia/nginx-lua

验证

curl -X POST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://localhost:20000/hello

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: