- 浏览: 2543355 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
Nginx and Proxy 2019(1)Nginx Enable Lua and Parse JSON
Set Up Nginx
> wget http://nginx.org/download/nginx-1.16.1.tar.gz
> tar zxvf nginx-1.16.1.tar.gz
> ./configure --prefix=/home/carl/tool/nginx-1.16.1
> make
> make install
> sudo ln -s /home/carl/tool/nginx-1.16.1 /opt/nginx-1.16.1
> sudo ln -s /opt/nginx-1.16.1 /opt/nginx
Start the Service
> sudo sbin/nginx
Visit the page
http://ubuntu-master/
Check this and enable lua
https://docs.nginx.com/nginx/admin-guide/dynamic-modules/lua/#
https://github.com/openresty/lua-nginx-module#installation
https://github.com/openresty/lua-nginx-module#nginx-compatibility
Install LuaJIT
http://luajit.org/install.html
> wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
> tar zxvf LuaJIT-2.0.5.tar.gz
> cd LuaJIT-2.0.5/
> make
> make install PREFIX=/home/carl/tool/luajit-2.0.5
> sudo ln -s /home/carl/tool/luajit-2.0.5 /opt/luajit-2.0.5
> sudo ln -s /opt/luajit-2.0.5 /opt/luajit
Add to PATH
PATH="/opt/luajit/bin:$PATH"
Check version
> luajit -v
LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
Install NDK (nix_devel_kit)
https://github.com/simplresty/ngx_devel_kit
Download the latest codes from here https://github.com/simplresty/ngx_devel_kit/tags
> wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1.tar.gz
> tar zxvf v0.3.1.tar.gz
> mv ngx_devel_kit-0.3.1 ~/tool/
> sudo ln -s /home/carl/tool/ngx_devel_kit-0.3.1 /opt/ngx_devel_kit-0.3.1
> sudo ln -s /opt/ngx_devel_kit-0.3.1 /opt/ngx_devel_kit
Instal ngx_lua
https://github.com/openresty/lua-nginx-module
> wget https://github.com/openresty/lua-nginx-module/archive/v0.10.15.tar.gz
> tar zxvf v0.10.15.tar.gz
> mv lua-nginx-module-0.10.15 ~/tool/
> sudo ln -s /home/carl/tool/lua-nginx-module-0.10.15 /opt/lua-nginx-module-0.10.15
> sudo ln -s /opt/lua-nginx-module-0.10.15 /opt/lua-nginx-module
Compile and Install Nginx
Check version here https://github.com/openresty/lua-nginx-module#nginx-compatibility
> wget https://nginx.org/download/nginx-1.17.6.tar.gz
> tar zxvf nginx-1.17.6.tar.gz
> cd nginx-1.17.6/
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.0
> ./configure --prefix=/home/carl/tool/nginx-1.17.6 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module
> make
> make install
> sudo ln -s /home/carl/tool/nginx-1.17.6 /opt/nginx-1.17.6
> sudo ln -s /opt/nginx-1.17.6 /opt/nginx
> sudo sbin/nginx
nginx: [alert] detected a LuaJIT version which is not OpenResty's; many optimizations will be disabled and performance will be compromised (see https://github.com/openresty/luajit2 for OpenResty's LuaJIT or, even better, consider using the OpenResty releases from https://openresty.org/en/download.html)
nginx: [error] lua_load_resty_core failed to load the resty.core module from https://github.com/openresty/lua-resty-core; ensure you are using an OpenResty release from https://openresty.org/en/download.html (rc: 2, reason: module 'resty.core' not found:
no field package.preload['resty.core']
no file './resty/core.lua'
I may find the release from here LUAJIT2
https://github.com/openresty/luajit2/releases
> wget https://github.com/openresty/luajit2/archive/v2.1-20190912.tar.gz
> tar zxvf v2.1-20190912.tar.gz
> cd luajit2-2.1-20190912/
> make
> make install PREFIX=/home/carl/tool/luajit-2.1.0.3
> sudo ln -s /home/carl/tool/luajit-2.1.0.3 /opt/luajit-2.1.0.3
> sudo ln -s /opt/luajit-2.1.0.3 /opt/luajit
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.1
> ./configure --prefix=/home/carl/tool/nginx-1.17.6 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module
> make
> make install
Solution:
https://github.com/openresty/lua-nginx-module/issues/1533
https://superuser.com/questions/1426961/error-while-installing-lua-nginx-module
Add Confguration
> vi conf/nginx.conf
http {
include 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"';
#access_log logs/access.log main;
lua_load_resty_core off;
> sudo sbin/nginx
Check my implementation
https://github.com/openresty/lua-nginx-module#rewrite_by_lua_file
https://www.cnblogs.com/tinywan/p/6526191.html
location /DWH {
rewrite_by_lua_file /opt/nginx/lua/DWH_proxy.lua;
}
> cat lua/DWH_proxy.lua
ngx.log(ngx.ERR, "hello, lua working");
ngx.req.set_uri("/",true);
URL rewrite
There are 2 commands to support that. ngx.exec and ngx.redirect
Try this library
https://github.com/ledgetech/lua-resty-http
> wget https://github.com/ledgetech/lua-resty-http/archive/v0.15.tar.gz
> cp /home/carl/install/lua-resty-http-0.15/lib/resty/* /opt/nginx/lua/
It does not work like that, it load the dependencies like this
2019/11/25 22:49:04 [error] 28551#0: *1 lua entry thread aborted: runtime error: /opt/nginx/lua/DWH_proxy.lua:2: module 'resty.http' not found:
no field package.preload['resty.http']
no file './resty/http.lua'
no file '/usr/local/share/luajit-2.1.0-beta3/resty/http.lua'
no file '/usr/local/share/lua/5.1/resty/http.lua'
no file '/usr/local/share/lua/5.1/resty/http/init.lua'
no file './resty/http.so'
no file '/usr/local/lib/lua/5.1/resty/http.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './resty.so'
no file '/usr/local/lib/lua/5.1/resty.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
Solution:
Install and Setup luarocks
Check https://luarocks.org/
https://luarocks.org/#quick-start
> wget https://luarocks.org/releases/luarocks-3.2.0.tar.gz
> tar zxvf luarocks-3.2.0.tar.gz
> cd luarocks-3.2.0/
> ./configure --prefix=/opt/luajit --with-lua=/opt/luajit --lua-suffix=jit-2.1.0-beta3 --with-lua-include=/opt/luajit/include/luajit-2.1
> make build
> make install
> luarocks --version
/opt/luajit/bin/luarocks 3.2.0
LuaRocks main command-line interface
Install package
> luarocks install md5
> luarocks install lua-resty-http
Installing https://luarocks.org/lua-resty-http-0.15-0.src.rock
lua-resty-http 0.15-0 is now installed in /opt/luajit (license: 2-clause BSD)
Stop the nginx
> sudo sbin/nginx -s stop
Error load package
no file '/usr/local/share/luajit-2.1.0-beta3/luarocks/loader.lua'
Looking for /opt/luajit/share/luajit-2.1.0-beta3
Reinstall that
> ./configure --prefix=/home/carl/tool/luarocks-3.2.0
> make
> make install
> sudo ln -s /home/carl/tool/luarocks-3.2.0 /opt/luarocks-3.2.0
> sudo ln -s /opt/luarocks-3.2.0 /opt/luarocks
Add to Path
PATH="/opt/luarocks/bin:$PATH"
> luarocks --version
/opt/luarocks/bin/luarocks 3.2.0
Add this to make it working
http {
lua_package_path 'lua/?.lua;/opt/luarocks/share/lua/5.1/?.lua;;';
My testing LUA file works fine
> cat lua/DWH_proxy.lua
ngx.log(ngx.ERR, "hello, lua working");
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("http://www.baidu.com",{
method="GET"
});
if res.status == ngx.HTTP_OK then
ngx.exec("/");
else
ngx.exit(res.status);
end
This seems working fine for me
location /DWH2 {
resolver 8.8.8.8 8.8.4.4;
set $proxy "";
set $proxy_uri "";
rewrite_by_lua '
ngx.log(ngx.ERR, "hello, lua22 working");
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("http://www.baidu.com",{
method="GET"
});
if res.status == ngx.HTTP_OK then
ngx.var.proxy = "stagingdwhapi.sillycatcloudbeta.com:9000";
ngx.var.proxy_uri = "/api/1.0/accounts/01616dae-f6d6-4eda-b818-6991a9144685/streams?dateEnd=2019-11-22&dateStart=2019-11-08&filter=list";
else
ngx.status=ngx.HTTP_UNAUTHORIZED;
ngx.exit(ngx.status)
end
';
proxy_pass http://$proxy$proxy_uri;
}
Download the exactly the same version and compile with SSL
> wget https://nginx.org/download/nginx-1.14.0.tar.gz
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.1
Add Open SSL Library
> sudo apt-get install -y libssl-dev
> ./configure --prefix=/home/carl/tool/nginx-1.14.2 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module --with-http_ssl_module
> make
> make install
1.14.0 Not make well there.
Change to use 1.14.2, works well.
My previous working copy
cat /opt/nginx-1.17.6/conf/nginx.conf
#user nobody;
worker_processes 1;
error_log logs/error.log notice;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
lua_package_path 'lua/?.lua;/opt/luarocks/share/lua/5.1/?.lua;;';
include 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"';
access_log logs/access.log main;
lua_load_resty_core off;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /DWH {
resolver 8.8.8.8 8.8.4.4;
set $proxy "";
set $proxy_uri "";
rewrite_by_lua '
ngx.log(ngx.ERR, "lua working start---------");
local h = ngx.req.get_headers()
for k, v in pairs(h) do
if k == "cookie" then
ngx.log(ngx.ERR, k,": ",v);
end
end
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("https://login.sillycatcloudbeta.com/ls/validate",{
ssl_verify=true,
method="GET",
headers = h
});
ngx.log(ngx.ERR, res);
if res.status == ngx.HTTP_OK then
ngx.var.proxy = "stagingdwhapi.sillycatcloudbeta.com:9000";
ngx.var.proxy_uri = "/api/1.0/accounts/01616dae-f6d6-4eda-b818-6991a9144685/streams?dateEnd=2019-11-22&dateStart=2019-11-08&filter=list";
else
ngx.status=ngx.HTTP_UNAUTHORIZED;
ngx.exit(ngx.status)
end
';
proxy_pass http://$proxy$proxy_uri;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Install cjson to parse the JSON response
> luarocks install lua-cjson
The installation is not working
https://www.kyne.com.au/~mark/software/lua-cjson-manual.html
> wget https://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz
> tar zxvf lua-cjson-2.1.0.tar.gz
This is a working copy
https://github.com/jiyinyiyong/json-lua
References:
https://github.com/Ermlab/nginx-lua-proxy
https://stackoverflow.com/questions/22788236/how-can-i-manipulate-the-json-body-of-a-post-request-using-nginx-and-lua
https://openresty-reference.readthedocs.io/en/latest/Directives/
https://serverfault.com/questions/946228/nginx-openresty-how-to-reverse-proxy-a-call-to-2-different-servers-based-bas
https://yos.io/2016/01/28/building-an-api-gateway-with-lua-and-nginx/
https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/
https://github.com/upyun/slardar/issues/19
Set Up Nginx
> wget http://nginx.org/download/nginx-1.16.1.tar.gz
> tar zxvf nginx-1.16.1.tar.gz
> ./configure --prefix=/home/carl/tool/nginx-1.16.1
> make
> make install
> sudo ln -s /home/carl/tool/nginx-1.16.1 /opt/nginx-1.16.1
> sudo ln -s /opt/nginx-1.16.1 /opt/nginx
Start the Service
> sudo sbin/nginx
Visit the page
http://ubuntu-master/
Check this and enable lua
https://docs.nginx.com/nginx/admin-guide/dynamic-modules/lua/#
https://github.com/openresty/lua-nginx-module#installation
https://github.com/openresty/lua-nginx-module#nginx-compatibility
Install LuaJIT
http://luajit.org/install.html
> wget http://luajit.org/download/LuaJIT-2.0.5.tar.gz
> tar zxvf LuaJIT-2.0.5.tar.gz
> cd LuaJIT-2.0.5/
> make
> make install PREFIX=/home/carl/tool/luajit-2.0.5
> sudo ln -s /home/carl/tool/luajit-2.0.5 /opt/luajit-2.0.5
> sudo ln -s /opt/luajit-2.0.5 /opt/luajit
Add to PATH
PATH="/opt/luajit/bin:$PATH"
Check version
> luajit -v
LuaJIT 2.0.5 -- Copyright (C) 2005-2017 Mike Pall. http://luajit.org/
Install NDK (nix_devel_kit)
https://github.com/simplresty/ngx_devel_kit
Download the latest codes from here https://github.com/simplresty/ngx_devel_kit/tags
> wget https://github.com/simplresty/ngx_devel_kit/archive/v0.3.1.tar.gz
> tar zxvf v0.3.1.tar.gz
> mv ngx_devel_kit-0.3.1 ~/tool/
> sudo ln -s /home/carl/tool/ngx_devel_kit-0.3.1 /opt/ngx_devel_kit-0.3.1
> sudo ln -s /opt/ngx_devel_kit-0.3.1 /opt/ngx_devel_kit
Instal ngx_lua
https://github.com/openresty/lua-nginx-module
> wget https://github.com/openresty/lua-nginx-module/archive/v0.10.15.tar.gz
> tar zxvf v0.10.15.tar.gz
> mv lua-nginx-module-0.10.15 ~/tool/
> sudo ln -s /home/carl/tool/lua-nginx-module-0.10.15 /opt/lua-nginx-module-0.10.15
> sudo ln -s /opt/lua-nginx-module-0.10.15 /opt/lua-nginx-module
Compile and Install Nginx
Check version here https://github.com/openresty/lua-nginx-module#nginx-compatibility
> wget https://nginx.org/download/nginx-1.17.6.tar.gz
> tar zxvf nginx-1.17.6.tar.gz
> cd nginx-1.17.6/
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.0
> ./configure --prefix=/home/carl/tool/nginx-1.17.6 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module
> make
> make install
> sudo ln -s /home/carl/tool/nginx-1.17.6 /opt/nginx-1.17.6
> sudo ln -s /opt/nginx-1.17.6 /opt/nginx
> sudo sbin/nginx
nginx: [alert] detected a LuaJIT version which is not OpenResty's; many optimizations will be disabled and performance will be compromised (see https://github.com/openresty/luajit2 for OpenResty's LuaJIT or, even better, consider using the OpenResty releases from https://openresty.org/en/download.html)
nginx: [error] lua_load_resty_core failed to load the resty.core module from https://github.com/openresty/lua-resty-core; ensure you are using an OpenResty release from https://openresty.org/en/download.html (rc: 2, reason: module 'resty.core' not found:
no field package.preload['resty.core']
no file './resty/core.lua'
I may find the release from here LUAJIT2
https://github.com/openresty/luajit2/releases
> wget https://github.com/openresty/luajit2/archive/v2.1-20190912.tar.gz
> tar zxvf v2.1-20190912.tar.gz
> cd luajit2-2.1-20190912/
> make
> make install PREFIX=/home/carl/tool/luajit-2.1.0.3
> sudo ln -s /home/carl/tool/luajit-2.1.0.3 /opt/luajit-2.1.0.3
> sudo ln -s /opt/luajit-2.1.0.3 /opt/luajit
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.1
> ./configure --prefix=/home/carl/tool/nginx-1.17.6 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module
> make
> make install
Solution:
https://github.com/openresty/lua-nginx-module/issues/1533
https://superuser.com/questions/1426961/error-while-installing-lua-nginx-module
Add Confguration
> vi conf/nginx.conf
http {
include 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"';
#access_log logs/access.log main;
lua_load_resty_core off;
> sudo sbin/nginx
Check my implementation
https://github.com/openresty/lua-nginx-module#rewrite_by_lua_file
https://www.cnblogs.com/tinywan/p/6526191.html
location /DWH {
rewrite_by_lua_file /opt/nginx/lua/DWH_proxy.lua;
}
> cat lua/DWH_proxy.lua
ngx.log(ngx.ERR, "hello, lua working");
ngx.req.set_uri("/",true);
URL rewrite
There are 2 commands to support that. ngx.exec and ngx.redirect
Try this library
https://github.com/ledgetech/lua-resty-http
> wget https://github.com/ledgetech/lua-resty-http/archive/v0.15.tar.gz
> cp /home/carl/install/lua-resty-http-0.15/lib/resty/* /opt/nginx/lua/
It does not work like that, it load the dependencies like this
2019/11/25 22:49:04 [error] 28551#0: *1 lua entry thread aborted: runtime error: /opt/nginx/lua/DWH_proxy.lua:2: module 'resty.http' not found:
no field package.preload['resty.http']
no file './resty/http.lua'
no file '/usr/local/share/luajit-2.1.0-beta3/resty/http.lua'
no file '/usr/local/share/lua/5.1/resty/http.lua'
no file '/usr/local/share/lua/5.1/resty/http/init.lua'
no file './resty/http.so'
no file '/usr/local/lib/lua/5.1/resty/http.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
no file './resty.so'
no file '/usr/local/lib/lua/5.1/resty.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
Solution:
Install and Setup luarocks
Check https://luarocks.org/
https://luarocks.org/#quick-start
> wget https://luarocks.org/releases/luarocks-3.2.0.tar.gz
> tar zxvf luarocks-3.2.0.tar.gz
> cd luarocks-3.2.0/
> ./configure --prefix=/opt/luajit --with-lua=/opt/luajit --lua-suffix=jit-2.1.0-beta3 --with-lua-include=/opt/luajit/include/luajit-2.1
> make build
> make install
> luarocks --version
/opt/luajit/bin/luarocks 3.2.0
LuaRocks main command-line interface
Install package
> luarocks install md5
> luarocks install lua-resty-http
Installing https://luarocks.org/lua-resty-http-0.15-0.src.rock
lua-resty-http 0.15-0 is now installed in /opt/luajit (license: 2-clause BSD)
Stop the nginx
> sudo sbin/nginx -s stop
Error load package
no file '/usr/local/share/luajit-2.1.0-beta3/luarocks/loader.lua'
Looking for /opt/luajit/share/luajit-2.1.0-beta3
Reinstall that
> ./configure --prefix=/home/carl/tool/luarocks-3.2.0
> make
> make install
> sudo ln -s /home/carl/tool/luarocks-3.2.0 /opt/luarocks-3.2.0
> sudo ln -s /opt/luarocks-3.2.0 /opt/luarocks
Add to Path
PATH="/opt/luarocks/bin:$PATH"
> luarocks --version
/opt/luarocks/bin/luarocks 3.2.0
Add this to make it working
http {
lua_package_path 'lua/?.lua;/opt/luarocks/share/lua/5.1/?.lua;;';
My testing LUA file works fine
> cat lua/DWH_proxy.lua
ngx.log(ngx.ERR, "hello, lua working");
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("http://www.baidu.com",{
method="GET"
});
if res.status == ngx.HTTP_OK then
ngx.exec("/");
else
ngx.exit(res.status);
end
This seems working fine for me
location /DWH2 {
resolver 8.8.8.8 8.8.4.4;
set $proxy "";
set $proxy_uri "";
rewrite_by_lua '
ngx.log(ngx.ERR, "hello, lua22 working");
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("http://www.baidu.com",{
method="GET"
});
if res.status == ngx.HTTP_OK then
ngx.var.proxy = "stagingdwhapi.sillycatcloudbeta.com:9000";
ngx.var.proxy_uri = "/api/1.0/accounts/01616dae-f6d6-4eda-b818-6991a9144685/streams?dateEnd=2019-11-22&dateStart=2019-11-08&filter=list";
else
ngx.status=ngx.HTTP_UNAUTHORIZED;
ngx.exit(ngx.status)
end
';
proxy_pass http://$proxy$proxy_uri;
}
Download the exactly the same version and compile with SSL
> wget https://nginx.org/download/nginx-1.14.0.tar.gz
> export LUAJIT_LIB=/opt/luajit/lib
> export LUAJIT_INC=/opt/luajit/include/luajit-2.1
Add Open SSL Library
> sudo apt-get install -y libssl-dev
> ./configure --prefix=/home/carl/tool/nginx-1.14.2 --with-ld-opt="-Wl,-rpath,/opt/luajit/lib" --add-module=/opt/ngx_devel_kit --add-module=/opt/lua-nginx-module --with-http_ssl_module
> make
> make install
1.14.0 Not make well there.
Change to use 1.14.2, works well.
My previous working copy
cat /opt/nginx-1.17.6/conf/nginx.conf
#user nobody;
worker_processes 1;
error_log logs/error.log notice;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
lua_package_path 'lua/?.lua;/opt/luarocks/share/lua/5.1/?.lua;;';
include 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"';
access_log logs/access.log main;
lua_load_resty_core off;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
location /DWH {
resolver 8.8.8.8 8.8.4.4;
set $proxy "";
set $proxy_uri "";
rewrite_by_lua '
ngx.log(ngx.ERR, "lua working start---------");
local h = ngx.req.get_headers()
for k, v in pairs(h) do
if k == "cookie" then
ngx.log(ngx.ERR, k,": ",v);
end
end
local http = require "resty.http";
local httpc = http.new();
local res, err = httpc:request_uri("https://login.sillycatcloudbeta.com/ls/validate",{
ssl_verify=true,
method="GET",
headers = h
});
ngx.log(ngx.ERR, res);
if res.status == ngx.HTTP_OK then
ngx.var.proxy = "stagingdwhapi.sillycatcloudbeta.com:9000";
ngx.var.proxy_uri = "/api/1.0/accounts/01616dae-f6d6-4eda-b818-6991a9144685/streams?dateEnd=2019-11-22&dateStart=2019-11-08&filter=list";
else
ngx.status=ngx.HTTP_UNAUTHORIZED;
ngx.exit(ngx.status)
end
';
proxy_pass http://$proxy$proxy_uri;
}
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Install cjson to parse the JSON response
> luarocks install lua-cjson
The installation is not working
https://www.kyne.com.au/~mark/software/lua-cjson-manual.html
> wget https://www.kyne.com.au/~mark/software/download/lua-cjson-2.1.0.tar.gz
> tar zxvf lua-cjson-2.1.0.tar.gz
This is a working copy
https://github.com/jiyinyiyong/json-lua
References:
https://github.com/Ermlab/nginx-lua-proxy
https://stackoverflow.com/questions/22788236/how-can-i-manipulate-the-json-body-of-a-post-request-using-nginx-and-lua
https://openresty-reference.readthedocs.io/en/latest/Directives/
https://serverfault.com/questions/946228/nginx-openresty-how-to-reverse-proxy-a-call-to-2-different-servers-based-bas
https://yos.io/2016/01/28/building-an-api-gateway-with-lua-and-nginx/
https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/
https://github.com/upyun/slardar/issues/19
发表评论
-
Update Site will come soon
2021-06-02 04:10 1672I am still keep notes my tech n ... -
Stop Update Here
2020-04-28 09:00 310I will stop update here, and mo ... -
NodeJS12 and Zlib
2020-04-01 07:44 468NodeJS12 and Zlib It works as ... -
Docker Swarm 2020(2)Docker Swarm and Portainer
2020-03-31 23:18 362Docker Swarm 2020(2)Docker Swar ... -
Docker Swarm 2020(1)Simply Install and Use Swarm
2020-03-31 07:58 364Docker Swarm 2020(1)Simply Inst ... -
Traefik 2020(1)Introduction and Installation
2020-03-29 13:52 330Traefik 2020(1)Introduction and ... -
Portainer 2020(4)Deploy Nginx and Others
2020-03-20 12:06 424Portainer 2020(4)Deploy Nginx a ... -
Private Registry 2020(1)No auth in registry Nginx AUTH for UI
2020-03-18 00:56 430Private Registry 2020(1)No auth ... -
Docker Compose 2020(1)Installation and Basic
2020-03-15 08:10 367Docker Compose 2020(1)Installat ... -
VPN Server 2020(2)Docker on CentOS in Ubuntu
2020-03-02 08:04 445VPN Server 2020(2)Docker on Cen ... -
Buffer in NodeJS 12 and NodeJS 8
2020-02-25 06:43 377Buffer in NodeJS 12 and NodeJS ... -
NodeJS ENV Similar to JENV and PyENV
2020-02-25 05:14 469NodeJS ENV Similar to JENV and ... -
Prometheus HA 2020(3)AlertManager Cluster
2020-02-24 01:47 415Prometheus HA 2020(3)AlertManag ... -
Serverless with NodeJS and TencentCloud 2020(5)CRON and Settings
2020-02-24 01:46 332Serverless with NodeJS and Tenc ... -
GraphQL 2019(3)Connect to MySQL
2020-02-24 01:48 243GraphQL 2019(3)Connect to MySQL ... -
GraphQL 2019(2)GraphQL and Deploy to Tencent Cloud
2020-02-24 01:48 445GraphQL 2019(2)GraphQL and Depl ... -
GraphQL 2019(1)Apollo Basic
2020-02-19 01:36 321GraphQL 2019(1)Apollo Basic Cl ... -
Serverless with NodeJS and TencentCloud 2020(4)Multiple Handlers and Running wit
2020-02-19 01:19 307Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(3)Build Tree and Traverse Tree
2020-02-19 01:19 313Serverless with NodeJS and Tenc ... -
Serverless with NodeJS and TencentCloud 2020(2)Trigger SCF in SCF
2020-02-19 01:18 288Serverless with NodeJS and Tenc ...
相关推荐
所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l
"Nginx、Lua、Redis 和 Json 的结合应用" Nginx 是一个高性能的 Web 服务器, Lua 是一种轻量级的脚本语言,而 Redis 是一个高性能的 NoSQL 数据库, Json 是一种轻量级的数据交换格式。通过结合使用这些技术,可以...
docker-letsencrypt-nginx-proxy-companion-examples, 结合 Docker gen和 letsencrypt Nginx 代理伙伴的示例 docker-letsencrypt-nginx-proxy-companion-examples这个库是使用 nginx代理插件, docker gen和 docker-...
此文比较详细讲述了Nginx与proxy共同搭建反向代理服务的配置方法
### Nginx+Lua通过URL传参方式实现动态代理 #### 概述 在现代Web应用开发中,灵活地管理后端服务之间的通信是至关重要的。动态代理技术为这一需求提供了解决方案,使得前端可以方便地根据业务逻辑将请求转发至不同...
《跟我学Nginx+Lua开发》这本书主要探讨了如何利用Nginx与Lua进行高效、灵活的Web服务开发。Nginx以其高性能、反向代理和负载均衡能力而闻名,而Lua则是一种轻量级的脚本语言,两者结合可以实现强大的服务器端功能。...
1. **Nginx模块 ngx_lua**:Nginx与Lua的桥梁是ngx_lua模块,由OpenResty公司开发,它允许我们在Nginx配置文件中直接嵌入Lua脚本,实现动态处理请求。 2. **性能优势**:由于LuaJIT(Just-In-Time编译器)的存在,...
本教程将详细解析如何使用Nginx、upload模块以及lua来搭建一个简单的文件上传系统。 首先,我们需要了解Nginx的ngx_http_upload_module模块,这是一个用于处理HTTP POST请求中的文件上传的第三方模块。它允许我们在...
**Nginx配置详解——以Nginx Proxy Manager为例** Nginx Proxy Manager是一款基于Nginx构建的网络代理管理工具,它允许用户通过友好的Web界面轻松地配置和管理Nginx反向代理设置。在深入理解Nginx Proxy Manager的...
1. **模块安装**:首先,你需要解压"lua-nginx-module-master.zip"并将其添加到Nginx的源代码构建路径中。然后,使用`--add-module`选项配置Nginx的编译过程,指定lua-nginx-module的源代码目录。完成编译和安装后,...
Lua-Nginx-Module,简称lua-nginx-module,是Nginx服务器的一个重要扩展模块,它将强大的Lua脚本语言集成到Nginx中,允许用户在Nginx配置文件中直接编写Lua代码,极大地增强了Nginx的功能性和灵活性。版本0.10.13是...
nginx_tcp_proxy_module-master.zip
标题中的“Linux-一个用于nginx-proxy的轻量级协同容器它能够自动创建更新LetsEncrypt证书”指的是一个专门设计用于nginx-proxy的轻量级Docker容器,它的主要功能是自动化处理Let's Encrypt证书的申请和更新过程。...
基于lua的nginx自定义负载均衡基于lua的nginx自定义负载均衡
在构建高性能、高可用性的Web服务时,常常会利用到Nginx作为反向代理和负载均衡器,Lua作为扩展Nginx功能的脚本语言,而Redis则作为内存数据存储,提供快速的数据访问。本资源包“nginx+lua+redis集群 连接插件和...
Nginx在vhost里的配置站点,通过proxy转发到动态域名的具体配置。 反向代理,动态域名 ,Proxy
而目前市面上用的非常成熟的扩展是由章亦春将Lua和Nginx粘合的ngx_lua模块,并且将Nginx核心、LuaJIT、ngx_lua模块、许多有用的Lua库和常用的第三方Nginx模块组合在一起成为OpenResty,这样开发人员就可以安装...
标题中的“docker-letsencrypt-nginx-proxy-companion”是一个开源项目,它专为与nginx-proxy容器协同工作设计,目的是为了方便地获取并自动更新Let's Encrypt的免费SSL/TLS证书。Let's Encrypt是一个非营利组织,...
1. **非阻塞 I/O**:Lua 脚本在 Nginx 的事件驱动模型中运行,允许在不阻塞其他请求的情况下处理任务,提高了整体性能。 2. **轻量级嵌入**:Lua 作为内联脚本语言,可以在配置文件中直接编写,简化了部署和维护。 3...