【问题标题】:NGINX and environment variables from configuration file配置文件中的 NGINX 和环境变量
【发布时间】:2011-06-11 18:39:39
【问题描述】:

我正在尝试通过它的配置文件为 nginx 设置一些环境变量。我正在使用 nginx/0.8.53,但它不工作。

server {
    listen 80;
    server_name localdictus;
    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
    passenger_enabled on;
    rails_env development;
    env VDMO_MANDANT = "somevalue";
    }

这是错误信息:

unknown directive "env" in /opt/nginx/conf/nginx.conf:43

文档告诉我有一个“env”命令......所以我做错了什么?? http://wiki.nginx.org/CoreModule#env

顺便说一句,我的应用程序不能通过在 shell 上导出来设置环境变量。

下面是几行:

37:    server {
38:    listen 80;
39:    server_name localdictus;
40:    root /opt/vdmo_dictus/public;   # <--- be sure to point to 'public'!
41:    passenger_enabled on;
42:    rails_env development;
43:    env VDMO_MANDANT = "somevalue";
44:    }

问候,

亚历克斯

【问题讨论】:

  • 你的 43 行到底是什么?
  • .. 和第 42 行,很好衡量。
  • 这需要在 Server Overflow 上,因为这是 nginx 配置问题,而不是 Rails。

标签: ruby-on-rails ruby nginx passenger env


【解决方案1】:

使用 nginx 为 rails 应用程序设置环境变量的解决方案。

例如,您的 RAILS_ROOT 是:/opt/myapp_MANDANT

然后下面的代码将从 RAILS_ROOT 路径中提取 MANDANT 并设置到 rails env。

split = RAILS_ROOT.split("_")
puts split.inspect


if split.size > 1
    ENV['VDMO_SYSTEM'] = split[2]
    ENV['VDMO_MANDANT'] = split[1]
elsif split.size > 0
    ENV['VDMO_SYSTEM'] = nil
    ENV['VDMO_MANDANT'] = split[1]
end

将此代码放入您的 environment.rb 文件中即可工作。

使用此方法的一个好方法是使用 --bind 选项挂载。

例子:

   mkdir railsapp_mandant
   mount -t /originalsource /railsapp_mandant

然后将 rails 应用的公共路径设置为 /originalsource/public/ 而不是 /railsapp_mandant/public/

【讨论】:

    【解决方案2】:

    documentation you linked to 来看,env 指令的“上下文”是main,而不是server。将指令放在您的 server { ... } 块之外(任何块之外)。

    另见this discussion。我不相信 env 指令可以满足您的要求。

    【讨论】:

      【解决方案3】:

      不要传递 env 指令。只需在启动 nginx 时使用-E 标志:

       sudo -E /usr/local/nginx/sbin/nginx
      

      【讨论】:

      • 抱歉,我刚刚注意到您的问题是:“顺便说一下,通过在 shell 上导出设置环境变量不是我的应用程序的选项”
      猜你喜欢
      • 2015-03-27
      • 2020-12-04
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2019-11-01
      • 2022-12-01
      相关资源
      最近更新 更多