首页 > 解决方案 > Nginx 1.14 无法访问系统环境变量

问题描述

我花了两天时间试图弄清楚如何让系统环境变量传递给 Nginx。

  1. 我已经在/etc/nginx.confwith中声明了环境变量env FOO
  2. 我试过perl_setset_by_lua.

但非工作。

我在 Ubuntu “Bionic” 18.04 机器上运行它。

任何想法?

编辑:

问题是,Nginx 剥离了所有环境变量,因此它们在 Web 服务器进程中不可用。遵循一些 Nginx 教程,set_by_perl或者set_by_lua是推荐的将系统环境变量导入 Web 服务器进程的方法,这在我的情况下似乎不起作用。

编辑:以下是我遵循的教程:https ://web.archive.org/web/20170712003702/https://docs.apitools.com/blog/2014/07/02/using-environment-variables-in-nginx -conf.html

标签: nginxenvironment-variables

解决方案


您不能在 nginx.conf 中设置环境变量。它将被忽略,这就是您所看到的。

有几个地方可以设置环境变量,我将展示文件的示例,其中环境变量可用于所有用户登录和 NGINX。

$sudo 纳米 /etc/环境

将您的 defs 添加到文件末尾;把那里的一切都留在那里。只需附加您的新定义。准确地做到这一点,行尾没有多余的空格,文件末尾没有多余的行。使用双引号。暂无评论。非常准确。

export COMPILERKEY = "jk8894085349058jjggl"
export FOO="ThisIsFooValue"
export FOO2="ThisIsFooValue2"

保存文件

重启服务器

显示所有定义的环境变量

$env

定义后,您可以通过定义的方式访问环境变量。环境变量的访问方法是一个我认为您还没有问到的问题。我希望这有帮助。


推荐阅读