【问题标题】:Nginx 1.14 can't access System Environment VariablesNginx 1.14 无法访问系统环境变量
【发布时间】:2018-05-25 15:34:37
【问题描述】:

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

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

但不起作用。

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

有什么想法吗?

编辑:

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

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

【问题讨论】:

    标签: nginx environment-variables


    【解决方案1】:

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

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

    $sudo nano /etc/environment

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

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

    保存文件

    重启服务器

    显示所有定义的环境变量

    $env

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

    【讨论】:

    • 感谢您的回答。但是环境变量本身已经定义(echo $FOO 返回预期值。)。问题是,Nginx 剥离了所有环境变量,因此它们在 Web 服务器进程中不可用。遵循一些 Nginx 教程,set_by_perlset_by_lua 是推荐将系统环境变量导入 Web 服务器进程的方法,这在我的情况下似乎不起作用。
    • 好的。从你的问题中并不清楚。祝你好运,也许其他人会给出答案。
    • 谢谢@elvn,我用这些信息更新了问题。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-08
    • 2021-01-09
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多