Festlegen der Umgebungsvariablen für die Verwendung von Nginx und Rails

Festlegen der Umgebungsvariablen für die Verwendung von Nginx und Rails

Das Apache-Modul mod_env bietet eine praktische Möglichkeit, Umgebungsvariablen in Konfigurationsdateien festzulegen, wie:

<VirtualHost *:80>
  ServerName xyz.com
  DocumentRoot /var/www/rails_app/public
  PassengerAppRoot /var/www/rails_app
  SetEnv MY_VARIABLE contents
</VirtualHost>

http://httpd.apache.org/docs/2.0/mod/mod_env.html#setenv

In nginx konnte ich jedoch nichts finden, das denselben Zweck erfüllt. Was ist hier die Alternative? Ich dachte daran, Umgebungsvariablen in .profile-Dateien festzulegen (ich verwende Ubuntu 10.04), aber das hätte nicht die gleiche „pro vHost“-Isolation wie bei Apache, oder?

Welche Alternativen gibt es hier?

Antwort1

FastCGI-Parameterfür FastCGI-Übergabe oderProxy-Set-Headerfür die Proxy-Übergabe.

Antwort2

Warum nicht einfach ein Startskript erstellen, das die benötigten Umgebungsvariablen festlegt, bevor es Nginx oder Rails aufruft … und ein Skript pro Instanz haben?

Antwort3

Mit fastcgi_params können Sie Umgebungsvariablen ganz einfach festlegen. Hier ist ein Beispiel für das Hinzufügen von Umgebungsvariablen mithilfe von fastcgi-Parametern mit php-fpm:

    location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param  MY_VARIABLE     contents;
        include        fastcgi_params;
    }

verwandte Informationen