2014-07-16 25 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

相關問題