2014-07-16 24 views
0

我们有一个Sinatra/Rack应用程序。我们正在使用安装了Passenger模块的Nginx,并且正在通过Passenger实例化Sinatra/Rack应用程序(我希望我能在此处获得所有动词)。在Nginx中通过命令行参数传递给机架应用程序

我的Rack应用程序的配置以命令行参数的形式出现(例如mqhost=localhost mqport=5672 mquser=foo mqpass=bar)。这些可通过ENV['mqhost']在机架应用程序中访问。

所有这些参数也被设置为环境变量,例如, $MQHOST$MQPORT

Q1:如何让乘客时,其实例化这些命令行参数传递到机架的应用程序?
Q2:如果我不能将这些作为命令行参数传递,是否有办法强制Passenger调用设置这些环境变量的bash脚本?

我已经检查了文档和另一个开发人员,我花了一两个小时尝试各种各样的事情,取得了一些成功。

回答

1
  1. 你不能。

  2. 您不必使用bash脚本。只需使用passenger_set_cgi_param直接设置即可。有没有在手册中关于环境变量一整章:https://www.phusionpassenger.com/documentation/Users%20guide%20Nginx.html#about_environment_variables

    但如果你真的想从一个bash脚本做到这一点,请尝试使用包装脚本的方法:http://blog.phusion.nl/2008/12/16/passing-environment-variables-to-ruby-from-phusion-passenger/

+0

谢谢。不幸的是,使用'passenger_set_cgi_param'的部分是环境变量最终在日志中。这意味着如果我设置了密码,它将在我们的日志中。你知道有没有办法解决这个问题? – aaronlevin

+0

使用我链接的包装器脚本方法。 – Hongli

相关问题