NGINX: Remove inline Lua from template. (#11806)
This commit is contained in:
parent
ee61440780
commit
6510535ae0
30 changed files with 361 additions and 233 deletions
|
|
@ -1,4 +1,5 @@
|
|||
local ngx_re_split = require("ngx.re").split
|
||||
local string_to_bool = require("util").string_to_bool
|
||||
|
||||
local certificate_configured_for_current_request =
|
||||
require("certificate").configured_for_current_request
|
||||
|
|
@ -108,7 +109,16 @@ end
|
|||
-- rewrite gets called in every location context.
|
||||
-- This is where we do variable assignments to be used in subsequent
|
||||
-- phases or redirection
|
||||
function _M.rewrite(location_config)
|
||||
function _M.rewrite()
|
||||
|
||||
local location_config = {
|
||||
force_ssl_redirect = string_to_bool(ngx.var.force_ssl_redirect),
|
||||
ssl_redirect = string_to_bool(ngx.var.ssl_redirect),
|
||||
force_no_ssl_redirect = string_to_bool(ngx.var.force_no_ssl_redirect),
|
||||
preserve_trailing_slash = string_to_bool(ngx.var.preserve_trailing_slash),
|
||||
use_port_in_redirects = string_to_bool(ngx.var.use_port_in_redirects),
|
||||
}
|
||||
|
||||
ngx.var.pass_access_scheme = ngx.var.scheme
|
||||
|
||||
ngx.var.best_http_host = ngx.var.http_host or ngx.var.host
|
||||
|
|
|
|||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_balancer.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_balancer.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local balancer = require("balancer")
|
||||
balancer.balance()
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_balancer_tcp_udp.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_balancer_tcp_udp.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local tcp_udp_balancer = require("tcp_udp_balancer")
|
||||
tcp_udp_balancer.balance()
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_certificate.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_certificate.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local certificate = require("certificate")
|
||||
certificate.call()
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_configuration.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_configuration.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local configuration = require("configuration")
|
||||
configuration.call()
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_content_tcp_udp.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_content_tcp_udp.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local tcp_udp_configuration = require("tcp_udp_configuration")
|
||||
tcp_udp_configuration.call()
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_init_tcp_udp.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_init_tcp_udp.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local tcp_udp_balancer = require("tcp_udp_balancer")
|
||||
tcp_udp_balancer.init_worker()
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
local configuration = require("configuration")
|
||||
local backend_data = configuration.get_backends_data()
|
||||
if not backend_data then
|
||||
ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
ngx.say("OK")
|
||||
ngx.exit(ngx.HTTP_OK)
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_log.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_log.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local monitor = require("monitor")
|
||||
monitor.call()
|
||||
11
rootfs/etc/nginx/lua/nginx/ngx_conf_log_block.lua
Normal file
11
rootfs/etc/nginx/lua/nginx/ngx_conf_log_block.lua
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
local balancer = require("balancer")
|
||||
local monitor = require("monitor")
|
||||
|
||||
local luaconfig = ngx.shared.luaconfig
|
||||
local enablemetrics = luaconfig:get("enablemetrics")
|
||||
|
||||
balancer.log()
|
||||
|
||||
if enablemetrics then
|
||||
monitor.call()
|
||||
end
|
||||
1
rootfs/etc/nginx/lua/nginx/ngx_conf_rewrite_auth.lua
Normal file
1
rootfs/etc/nginx/lua/nginx/ngx_conf_rewrite_auth.lua
Normal file
|
|
@ -0,0 +1 @@
|
|||
ngx.var.cache_key = ngx.encode_base64(ngx.sha1_bin(ngx.var.tmp_cache_key))
|
||||
2
rootfs/etc/nginx/lua/nginx/ngx_conf_srv_hdr_filter.lua
Normal file
2
rootfs/etc/nginx/lua/nginx/ngx_conf_srv_hdr_filter.lua
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
local lua_ingress = require("lua_ingress")
|
||||
lua_ingress.header()
|
||||
5
rootfs/etc/nginx/lua/nginx/ngx_rewrite.lua
Normal file
5
rootfs/etc/nginx/lua/nginx/ngx_rewrite.lua
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
local lua_ingress = require("lua_ingress")
|
||||
local balancer = require("balancer")
|
||||
|
||||
lua_ingress.rewrite()
|
||||
balancer.rewrite()
|
||||
24
rootfs/etc/nginx/lua/nginx/ngx_srv_redirect.lua
Normal file
24
rootfs/etc/nginx/lua/nginx/ngx_srv_redirect.lua
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
local request_uri = ngx.var.request_uri
|
||||
local redirect_to = ngx.arg[1]
|
||||
|
||||
local luaconfig = ngx.shared.luaconfig
|
||||
local use_forwarded_headers = luaconfig:get("use_forwarded_headers")
|
||||
|
||||
if string.sub(request_uri, -1) == "/" then
|
||||
request_uri = string.sub(request_uri, 1, -2)
|
||||
end
|
||||
|
||||
local redirectScheme = ngx.var.scheme
|
||||
local redirectPort = ngx.var.server_port
|
||||
|
||||
if use_forwarded_headers then
|
||||
if ngx.var.http_x_forwarded_proto then
|
||||
redirectScheme = ngx.var.http_x_forwarded_proto
|
||||
end
|
||||
if ngx.var.http_x_forwarded_port then
|
||||
redirectPort = ngx.var.http_x_forwarded_port
|
||||
end
|
||||
end
|
||||
|
||||
return string.format("%s://%s:%s%s", redirectScheme,
|
||||
redirect_to, redirectPort, request_uri)
|
||||
53
rootfs/etc/nginx/lua/ngx_conf_init.lua
Normal file
53
rootfs/etc/nginx/lua/ngx_conf_init.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
local cjson = require("cjson.safe")
|
||||
|
||||
collectgarbage("collect")
|
||||
local f = io.open("/etc/nginx/lua/cfg.json", "r")
|
||||
local content = f:read("*a")
|
||||
f:close()
|
||||
local configfile = cjson.decode(content)
|
||||
|
||||
local luaconfig = ngx.shared.luaconfig
|
||||
luaconfig:set("enablemetrics", configfile.enable_metrics)
|
||||
luaconfig:set("use_forwarded_headers", configfile.use_forwarded_headers)
|
||||
-- init modules
|
||||
local ok, res
|
||||
ok, res = pcall(require, "lua_ingress")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
lua_ingress = res
|
||||
lua_ingress.set_config(configfile)
|
||||
end
|
||||
ok, res = pcall(require, "configuration")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
configuration = res
|
||||
if not configfile.listen_ports.status_port then
|
||||
error("required status port not found")
|
||||
end
|
||||
configuration.prohibited_localhost_port = configfile.listen_ports.status_port
|
||||
end
|
||||
ok, res = pcall(require, "balancer")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
balancer = res
|
||||
end
|
||||
if configfile.enable_metrics then
|
||||
ok, res = pcall(require, "monitor")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
monitor = res
|
||||
end
|
||||
end
|
||||
ok, res = pcall(require, "certificate")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
certificate = res
|
||||
if configfile.enable_ocsp then
|
||||
certificate.is_ocsp_stapling_enabled = configfile.enable_ocsp
|
||||
end
|
||||
end
|
||||
30
rootfs/etc/nginx/lua/ngx_conf_init_stream.lua
Normal file
30
rootfs/etc/nginx/lua/ngx_conf_init_stream.lua
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
local cjson = require("cjson.safe")
|
||||
collectgarbage("collect")
|
||||
local f = io.open("/etc/nginx/lua/cfg.json", "r")
|
||||
local content = f:read("*a")
|
||||
f:close()
|
||||
local configfile = cjson.decode(content)
|
||||
-- init modules
|
||||
local ok, res
|
||||
ok, res = pcall(require, "configuration")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
configuration = res
|
||||
end
|
||||
ok, res = pcall(require, "tcp_udp_configuration")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
tcp_udp_configuration = res
|
||||
if not configfile.listen_ports.status_port then
|
||||
error("required status port not found")
|
||||
end
|
||||
tcp_udp_configuration.prohibited_localhost_port = configfile.listen_ports.status_port
|
||||
end
|
||||
ok, res = pcall(require, "tcp_udp_balancer")
|
||||
if not ok then
|
||||
error("require failed: " .. tostring(res))
|
||||
else
|
||||
tcp_udp_balancer = res
|
||||
end
|
||||
15
rootfs/etc/nginx/lua/ngx_conf_init_worker.lua
Normal file
15
rootfs/etc/nginx/lua/ngx_conf_init_worker.lua
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
local cjson = require("cjson.safe")
|
||||
|
||||
local f = io.open("/etc/nginx/lua/cfg.json", "r")
|
||||
local content = f:read("*a")
|
||||
f:close()
|
||||
local configfile = cjson.decode(content)
|
||||
|
||||
local lua_ingress = require("lua_ingress")
|
||||
local balancer = require("balancer")
|
||||
local monitor = require("monitor")
|
||||
lua_ingress.init_worker()
|
||||
balancer.init_worker()
|
||||
if configfile.enable_metrics and configfile.monitor_batch_max_size then
|
||||
monitor.init_worker(configfile.monitor_batch_max_size)
|
||||
end
|
||||
|
|
@ -146,6 +146,10 @@ function _M.is_blank(str)
|
|||
return str == nil or string_len(str) == 0
|
||||
end
|
||||
|
||||
function _M.string_to_bool(str)
|
||||
return str == "true"
|
||||
end
|
||||
|
||||
-- this implementation is taken from:
|
||||
-- https://github.com/luafun/luafun/blob/master/fun.lua#L33
|
||||
-- SHA: 04c99f9c393e54a604adde4b25b794f48104e0d0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue