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.