Nginx

你如何在 Nginx 中設置伺服器特定的 ENV 值?

  • January 19, 2012

我正在啟動一個項目,該項目使用環境變數來設置數據庫連接和其他一些東西。(他們不想使用配置文件,因為人們粗心並覆蓋它們)。

無論如何,我正在使用 nginx,雖然它支持 env - 它似乎支持得不夠好。您不能在每個伺服器塊的基礎上設置 env 值。換句話說,這是行不通的:

server {
   listen 80;
   server_name domain;
   env FOO = "bar";
}

你必須這樣做:

env FOO = "bar";

http {
   server {
       listen 80;
       server_name domain;
   }
}

這意味著我不能擁有特定於虛擬主機的值。所以我必須為每個站點創建一個完整的虛擬主機配置,並且只啟動我現在想要的那個,以便正確設置值。

有沒有辦法解決這個問題?

事實證明,如果您使用的是 fastcgi,您可以通過傳遞來自fastcgi_param的值來解決這個問題。

server {
   listen 80;
   server_name domain;

   # Pass PHP scripts to php-fastcgi listening on port 9000
   location ~ path/to/it {
       include fastcgi_params;
       fastcgi_pass 127.0.0.1:9000;
       fastcgi_param FOO "bar";
   }
}

引用自:https://serverfault.com/questions/351696