openresty获取环境变量

最近开发中,使用openresty获取环境变量时遇到一些问题,在此记录一下。
官网描述,地址http://nginx.org/en/docs/ngx_core_module.html#env
默认情况下,nginx 会移除所有从父进程继承的环境变量,如果你想使用这些环境变量,需要使用该指令显示告知nginx不要移除你指定的环境变量。而且你也可以更改它们的值或创建新的环境变量。

操作方法为:
nginx.conf中插入配置

env ENV;

lua代码中调用

os.getenv("ENV")

注意:
此方法只能拿到openresty启动时候的环境变量,在运行过程中添加或修改的环境变量是不会变化的。
例如:
1.启动时~/.bashrc文件中已有

export ENV=test

2.启动openresty
3.修改~/.bashrc中变量为

export ENV=pre

并source ~/.bashrc
4.运行

os.getenv("ENV")

此时得到的结果为test。即使nginx -s reload也不行。必须退出nginx再启动才可以。
猜测是因为reload只会重新启动worker进程,不会重启master进程,而worker进程继承了master进程的环境变量,所以reload是没用的。

参考
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章