Ruby on rails nginx.conf-乘客环境变量未加载到轨道中

Ruby on rails nginx.conf-乘客环境变量未加载到轨道中,ruby-on-rails,nginx,passenger,Ruby On Rails,Nginx,Passenger,我在nginx.conf中定义了环境变量,如下所示- server { listen 80; server_name XX.XX.XX.XX; //Masked for this question location ~ ^/clients/abc(/.*|$) { alias /home/abc/Project/public$1; passenger_base_uri

我在nginx.conf中定义了环境变量,如下所示-

 server {
        listen       80;
        server_name  XX.XX.XX.XX; //Masked for this question

        location ~ ^/clients/abc(/.*|$) {
                alias /home/abc/Project/public$1;
                passenger_base_uri /clients/abc;
                passenger_app_root /home/abc/Project;
                passenger_document_root /home/abc/Project/public;
                passenger_enabled on;
                passenger_env_var AWS_U disha;
        }
}
我重新启动了nginx,但当我打开
rails c
并键入
ENV['AWS_']]
时,它返回
nil


我可能做错了什么?

您需要将
passenger\U env\U var
指令移动到
server
部分

server {
   ...
   passenger_env_var VAR value;
}

仅当乘客加载应用程序时才设置环境变量。当应用程序通过
rails c
命令启动时,不会设置它们

如果您想知道Passenger加载的正在运行的应用程序上的环境变量的值,您可以执行一个临时调试操作:

class DebugController < ApplicationController
  def foobar
    render plain: "FOOBAR = '#{ENV['FOOBAR']}'"
  end
end

Rails.application.routes.draw do
  get "/debug/foobar" => "debug#foobar"
end
class-DebugController“debug#foobar”
结束

您是否可以移动
乘客\u启用
乘客环境变量AWS\U disha位于
位置
之外,进入
服务器
块。参考说明此指令可在位置上下文中使用。当我尝试在服务器和位置上下文中使用该指令时,它起了作用。在我看来,提问者遇到了另一个问题。