Eu tenho um servidor com nginx que executa um site em produção que deve ser substituído por um novo site no futuro próximo.
Para estar pronto para esse dia, estou preparando todas as configurações necessárias para executar o novo site.
O que eu gostaria de ter é uma variável global na principal nginx.conf
que contém uma string (por exemplo, 'old'
ou 'new'
representando o site que deveria estar ativo no domínio principal example.com
enquanto o outro site está em other.example.com
.
Eu tentei:
Em nginx.conf
http{
...
set $site_in_production 'new';
...
include /etc/nginx/conf.c/*.conf;
}
Em /etc/nginx/conf.d/example.com.conf
server{
...
if($site_in_production='new'){
server_name other.example.com;
} else {
server_name example.com www.example.com;
}
...
}
Em /etc/nginx/conf.d/new.example.com.conf
server{
...
if($site_in_production='new'){
server_name example.com www.example.com;
} else {
server_name other.example.com;
}
...
}
Mas, ao executar um configtest, recebo este erro:
nginx: [emerg] "set" directive is not allowed here in /etc/nginx/nginx.conf:XX
então eu acho que a diretiva set
não é permitida fora de um bloco server
Existe uma maneira de obter essa funcionalidade com uma única variável em todos os arquivos de configuração do nginx?
Muito obrigado!