Variáveis dinâmicas da fonte externa na configuração do proxy nginx

1

Eu preciso fazer algumas ações condicionais no nginx que está funcionando como proxy. Basicamente tudo se resume a ser capaz de definir algumas variáveis nginx de fonte externa. Pode ser um script bash ou resultado gerado pelo url ou algo parecido.

Por exemplo:

set $var = [result of http request]

ou

set $var = [result of bash command]

Existe alguma solução confiável para isso? Módulos Se não é boa ideia para isso com o nginx, quais são as alternativas?

    
por SiliconMind 18.06.2015 / 11:10

2 respostas

2

A solução foi usar o módulo lua que executa o script de lua simples para executar o processamento necessário. Exemplo simples:

location / {
  # Get device type from lua script.
  # Note: do not use content_by_lua as it's executed in separate context.
  set_by_lua_file $device_type 'device-detect.lua';

  # Do what needs to be done...
}

O que quer que seja retornado pelas terras do script lua dentro da variável $device_type .

Importante lembrar é que na maioria das distribuições Linux, o módulo lua é parte do pacote nginx-extras que deve ser instalado ao invés do nginx-core padrão.

    
por 06.05.2016 / 14:30
0

O Nginx tem muitas variáveis internas [1] Você poderia usar algo assim:

#Default to EN
set $vislang "EN";
#Discriminate language
if ($http_accept_language ~* "^fr") {
    set $vislang "FR";
}

Uma solução baseada em bash poderia ser um "sed-i nginx_conf_file & & service nginx reload" mas acho que não está muito limpo.

[1] link

    
por 18.06.2015 / 12:06

Tags