Experimentei usar variáveis de ambiente sub_filter e nginx, mas concluí que não é possível .
Por exemplo, isso mostra minhas experiências e shows usando ENVs passados para o nginx não funcionam dentro de um bloco server
:
env TOMTEST1; # OK - makes $ENV{"TOMTEST1"} available but NOT in server block.
http {
server {
# set $TOMTEST1 $ENV{"TOMTEST1"}; # KO - DOES NOT WORK - NGINX WONT START
set $TOMTEST2 'tomtest2 Var'; # OK - THIS DOES WORK OK
sub_filter 'TOM_TEST2' $TOMTEST2; # OK - but not useful to me.
sub_filter 'TOM_TEST3' 'tomtest3 Var'; # OK - but not useful to me.
sub_filter_once off; # Don't stop at the first match, replace all of them
sub_filter_types "text/javascript" "application/json"; # Apply to these mime types in addition to text/html
# Serve static files
location / {
try_files $uri /index.html =404;
}
...
em que o arquivo estático config.json que estou veiculando tem várias sequências de teste, como as seguintes:
{
"environment": "local",
"test1": "$ENV{"TOMTEST1"}",
"test3": "TOM_TEST2",
"test4": "TOM_TEST3",
}
Como @ AD7six mencionou, a maneira de proceder é ter um script que é executado antes de o nginx começar a produzir um arquivo de configuração válido a partir de espaços reservados. Mas isso levanta a questão: se um script for executado antes do início do nginx, também posso definir o conteúdo do meu arquivo config.json
nesse script e não me incomodar com sub_filter
.