你如何在Nginx中设置服务器特定的ENV值?

我开始一个项目,使用环境variables来设置数据库连接和其他一些事情。 (他们不想使用configuration文件,因为人们粗心大意并覆盖它们)。

无论如何,我正在使用nginx,虽然它支持env – 它似乎并没有足够好的支持 。 您不能在每个服务器块的基础上设置env值。 换句话说,这是行不通的。

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

你必须这样做:

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

这意味着我不能具有特定于虚拟主机的值。 所以我必须为每个站点创build一个完整的虚拟主机configuration,并且只激活一个我想要的那一刻,以便正确设置该值。

有什么办法可以解决这个问题吗?

事实certificate,如果你使用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"; } }