2016-06-20 13 views
0

Nginx的:建有passenger-install-nignx-module的Nginx服務器名正則表達式匹配不設置passenger_app_env

乘客版本:5.0.28

操作系統:Ubuntu的14.04


我已經符號鏈接每個我的應用程序到自己的一套環境文件夾:

  • /存儲庫
    • /development.manager
      • /應用
      • ...
    • /test.manager
    • /staging.manager
    • ...

實際文件夾位於硬盤上的另一個位置。所有這些文件夾都是指向那個文件夾的符號鏈接。

問題是,Nginx似乎沒有正確設置乘客環境變量。檢查日誌會引發一個沒有意義的應用程序錯誤(並且nginx配置是自事情發生後唯一改變的)。此外,錯誤頁面顯示狀態:

因爲你正在運行在分期或生產 模式,該Web應用程序,錯誤的細節已經從本網頁 出於安全考慮省略。

這意味着它不使用開發環境,即使日誌中的root目錄顯示development.manager。這是當我通過URL訪問:http://manager-development/

下面是從我的nginx sites-enabled配置相關的摘錄:

server { 
    listen 80; 
    server_name ~^manager-(?<environment>development|test)$; 
    passenger_app_env $environment; 
    passenger_ruby /home/vagrant/.rvm/gems/[email protected]/wrappers/ruby; 
    passenger_enabled on; 
    root /home/vagrant/apps/$environment.manager/public; 
    client_max_body_size 30M; 
} 

我有一種感覺,解決方案可能是我提供here,以及一個可能的錯誤配置nginx的塊答案的組合。

編輯:我明確地提出了在我的軌道錯誤的應用程序,輸出環境作爲一個字符串,它的字面意思是「$環境」 ......

回答

0

我已經放棄了這一做法,因爲它似乎變量麥凱納t在某些地方使用時由nginx解釋。我現在使用自定義的Bash/Ruby腳本遍歷我的環境/應用程序名稱並生成配置塊。