在 openresty:alpine 的 docker 容器中使用 set_by_lua 和 os.getenv

我正在运行 openresty 中的 nginx,使用官方的 alpine-fat docker 镜像,并且 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 worker 进程似乎无法获取其值,$var 仍为空。

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

如何让这件事情起作用,如果我可以的话?

点赞
用户2830850
用户2830850

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

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

语法:env variable[=value];

默认值:

env TZ;

上下文:main

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

2017-12-25 16:41:46