2016-06-20 2 views
0

Nginx Einstellung: Errichtet mit passenger-install-nignx-moduleNginx server_name Regex nicht passenger_app_env

Passagier Version: 5.0.28

OS: Ubuntu 14,04


Ich habe jedes meiner Apps in ihre eigene symbolische Links Satz Umgebungsordner:

  • /Lager
    • /development.manager
      • /app
      • ...
    • /test.manager
    • /staging.manager
    • ...

Wo sich die eigentlichen Ordner an einem anderen Ort auf meiner Festplatte befinden. Alle diese Ordner sind symbolische Verknüpfungen, die auf diesen einen Ordner verweisen.

Das Problem ist, dass Nginx die Passagierumgebungsvariable nicht richtig einzustellen scheint. Wenn Sie die Protokolle überprüfen, wird ein App-Fehler ausgelöst, der keinen Sinn ergibt (und die nginx-Konfiguration ist das einzige, was sich seit dem Abbruch geändert hat). Auch die Fehlerseite zeigt Zustände:

Weil Sie diese Web-Anwendung in Staging ausgeführt werden oder die Produktion Modus werden die Einzelheiten des Fehlers wurden von dieser Webseite aus Sicherheitsgründen verzichtet.

Was bedeutet, dass es nicht die Entwicklungsumgebung, obwohl das root Verzeichnis in den Protokollen development.manager zeigt. Dies ist, wenn ich über die URL zugreifen: http://manager-development/.

Hier ist der relevante Auszug aus meiner nginx sites-enabled Konfiguration:

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; 
} 

Ich habe eine die Lösung Gefühl könnte eine Kombination aus einer Antwort ich here sowie einen möglicherweise falsch konfiguriert nginx Block vorgesehen.

EDIT: Ich hob explizit ein Fehler in meiner Rails-Anwendung, die Umwelt als String und es ist buchstäblich „$ environment“, dass die Ausgabe ...

Antwort

0

Ich habe auf diesem Ansatz aufgegeben, da sie Variablen scheint aren‘ Wird von nginx interpretiert, wenn es an bestimmten Stellen verwendet wird. Ich verwende jetzt ein benutzerdefiniertes Bash/Ruby-Skript, um über meine Umgebungen/App-Namen zu iterieren und die Konfigurationsblöcke zu generieren.