Openresty(十三)env指令

一     openresty引用系统的环境变量

官方env指令

查看openresty中相关指令帮助文档

restydoc -s env  --> 查看"帮助文档"

前提: yum install openresty-doc -y

①    应用场景

+++++++++++"使用场景"+++++++++++

1) 本想在'初始化init阶段'读取配置文件中设置的自定义变量

2) 但由于在初始化阶段,配置文件'还没有'加载

3) 解决策略:将该变量加入到系统环境变量中,来实现该变量的配置

核心: 经常会依据'不同的环境'使用'不同的配置'

②    env指令

Syntax: env variable[=value]; Context: main  -->nginx引入的,'不是'openresty'独有'的

1)  默认情况下,nginx 会'移除所有'从父进程继承的环境变量,想使用必须'白名单'机制

2)  如果你'想使用'这些环境变量,需要使用该指令'显示告知'nginx不要移除你指定的环境变量

env JAVA_HOME;

效果:nginx 会'保留'系统的 JAVA_HOME 环境变量

3)  也可以来'覆盖'父进程的环境变量

使用env JAVA_HOME="java";

备注:可以通过这种方式'更改'它们的值或'创建新'的环境变量

4)  典型应用,'不同的环境'进行'不同的配置'

config.lua local env = os.getenv("PROJECT_MODE") 

local config = {} -- 开发环境配置 

if env == "DEV" then

    -- 开发环境配置 

elseif env == "PROD" then 

    -- 生产环境配置

end 

return config

③    nginx.conf中引用

Openresty(十三)env指令_第1张图片

④    nginx.conf中使用

# 要求:必须安装'lua-nginx-module'模块
# 用在'其它'地方 -->该变量'作用域'的问题

server {
    set_by_lua $curr_server_name 'return os.getenv("NGINX_SERVERNAME")';
}
警告:自从v0.9.17发行版以来,"不鼓励"使用此指令;请改用'新'的set_by_lua_block指令

注意:这个指令一次只能写出一个'nginx变量'的值;

 ④    lua脚本中使用

⑤    测试结果

⑥    其它语言方式

nginx中通过lua和perl获取环境变量

Openresty(十三)env指令_第2张图片

你可能感兴趣的:(Openresty,lua)