openresty中的set_by_lua&os.getenv:alpine docker container

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了openresty中的set_by_lua&os.getenv:alpine docker container相关的知识,希望对你有一定的参考价值。

我在openresty official docker image中运行alpine-fat nginx,并且openresty进程从nobody用户开始。

我需要使用下一个字符串设置nginx变量:

set_by_lua $var 'return os.getenv("ENV_VAR")';

docker-compose.yml包含下一个块:

build:
  context: .
  dockerfile: ./Dockerfile.nginx
environment:
  - ENV_VAR=value

但是,nginx工作进程似乎没有得到它的价值,而$var仍然是空的。

我试图将export ENV_VAR=value添加到/etc/profile文件,但没有用。我试图用nginx用户运行openresty,但它也看不到ENV_VAR变量的值。

如果可以的话,我怎样才能使那件事成功?

答案

尝试将env ENV_VAR;添加到您的nginx配置中。默认情况下,nginx将丢弃所有环境变量,这将允许保存它。

来自https://nginx.org/en/docs/ngx_core_module.html#env

语法:env variable [= value];

默认:

env TZ;

背景:主要

默认情况下,nginx会删除从其父进程继承的所有环境变量,但TZ变量除外。该指令允许保留一些继承的变量,更改其值或创建新的环境变量。

以上是关于openresty中的set_by_lua&os.getenv:alpine docker container的主要内容,如果未能解决你的问题,请参考以下文章

又拍云叶靖:OpenResty 在又拍云容器平台中的应用

京东云罗玉杰:OpenResty 在直播场景中的应用

如何在 nginx.conf 中为 lua 中的 openresty 初始化 mysql

openresty 安装指南

openresty+lua在反向代理服务中的玩法

openresty+lua在反向代理服务中的玩法