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是沒用的。

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