Como você define valores ENV específicos do servidor em Nginx?

7

Estou iniciando um projeto que usa variáveis de ambiente para definir a conexão com o banco de dados e algumas outras coisas. (Eles não queriam usar arquivos de configuração, já que as pessoas são descuidadas e sobrescrevem).

De qualquer forma, estou usando o nginx e enquanto ele suporta env - ele não parece apoie bem . Não é possível definir os valores de env em um bloco por servidor . Em outras palavras, isso não funcionará:

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

Você deve fazer isso:

env FOO = "bar";

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

O que significa que não posso ter valores específicos de vhost. Por isso, devo criar uma configuração vhost completa para cada site e ativar somente a que eu quero no momento, para que o valor seja definido corretamente.

Existe alguma maneira de contornar isso?

    
por Xeoncross 19.01.2012 / 23:25

1 resposta

10

Acontece que se você estiver usando o fastcgi você pode contornar isso passando os valores de 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";
    }
}
    
por 19.01.2012 / 23:47