Ich verwende SetEnv in Apache, um einige Variablen in virtuellen Hosts festzulegen, die ich in PHP mithilfe von wiederherstelle $_SERVER[the_variable]
.
Jetzt wechsle ich zu Perl Catalyst und Nginx, aber es scheint, dass die "env" -Richtlinie in Nginx nicht dieselbe ist. Es funktioniert nicht. Wie kann es erreicht werden?
Hier ist das Hintergrundbild, nur für den Fall, dass jemand einen besseren Ansatz vorschlagen kann oder mein vorheriges System mit Nginx nicht funktioniert.
- Ich benutze die gleiche App für viele Domains. Alle Daten stammen aus verschiedenen Datenbanken mit derselben Struktur.
- Der Datenbankname ist in dieser Umgebungsvariablen fest auf dem virtuellen Host codiert.
- Da ich den Datenbanknamen kenne, werden alle Abfragen von der ersten Abfrage an in die entsprechende Datenbank verschoben.
- Ich kann mehrere Domänen mit derselben Datenbank haben, wobei nur dieselbe Variable in die Anweisungen aufgenommen wird.
aber es ist für PHP-CGI
quelle
Sie sollten bedenken, dass nginx PHP-Prozesse nicht wie Apache verwaltet. Sie sollten entweder php-fpm oder php-cgi konfigurieren, abhängig davon, was PHP auf Ihrem Server ausführt.
php-cgi
PHP-Fpm
quelle
Der Socket-Speicherort fastcgi_pass muss zuerst und dann jeder der Parameter fastcgi_param angegeben werden. Sie können auch Variablen in einer Datei im Ordner nginx config auflisten und diese Datei dann einschließen. Die Include-Datei hat üblicherweise den Namen fastcgi_params . Ihre Umgebungsparameter können einfach zum PHP-Handling-Block hinzugefügt werden:
Die Datei fastcgi_params , die sich im selben Verzeichnis wie nginx.conf befindet, sieht häufig folgendermaßen aus:
quelle