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