OpenResty 访问系统环境变量

在编写程序时,我们经常会依据不同的环境使用不同的配置,之前一直以为 OpenResty 无法访问系统的环境变量,所以使用一种很 low 的方式去加载不同环境的配置。现在才发现自己还是对 Nginx 配置了解的不够全。其实 Nginx 的核心功能中就存在一个 env指令,可以实现我们的需求。下面来说明下这个 env 指令。

env

Syntax: env variable[=value];
Context: main

默认情况下,nginx 会移除所有从父进程继承的环境变量,如果你想使用这些环境变量,需要使用该指令显示告知nginx不要移除你指定的环境变量。而且你也可以更改它们的值或创建新的环境变量。

例如

env PROJECT_MODE;
# 也可以使用env PROJECT_MODE=DEV; 来覆盖父进程的环境变量

则 nginx 会保留系统的 PROJECT_MODE 环境变量,
然后在lua脚本中,我们就可以通过 lua 的os.getenv()来获取对应的环境变量了,并依据不同的环境使用不同的配置

# config.lua
local env = os.getenv("PROJECT_MODE")
local config = {}
-- 开发环境配置
if env == "DEV" then

-- 生产环境配置
elseif env == "PROD" then

end

return config
标签:Openresty 发布于:2019-11-01 19:31:47