A diretriz do mapa não funciona: variável desconhecida

1

Estou usando o nginx versão 1.4.6.

Estou tendo problemas para conseguir que o map funcione. Eu tenho algo assim:

http {
    map $arg_f $forum {
        default 0;
        1 2;
    }

    # ...

    server {
        # ...

        location = /old.php {
            if ($forum) {
                return 301 /forums/$forum/;
            }
            return 494;
        }

        # ...
    }

    # ...
}

Veja o que recebo com nginx -t :

nginx: [emerg] unknown "forum" variable

O objetivo é mapear antigos URIs para novos URIs. O problema é que alguns dos IDs numéricos do fórum foram alterados. Eu gostaria de lidar com isso em Nginx, então estou disposto a recorrer a lua se não houver outro jeito fácil. Estou aberto a soluções alternativas, desde que sejam elegantes, mas gostaria de saber por que map não está funcionando aqui. É porque o módulo de reescrita não consulta mapas, pelo menos em 1,4?

    
por Zenexer 11.09.2014 / 23:46

1 resposta

1

Acabei de testar a seguinte configuração mínima com o nginx v1.4.7:

events {
    worker_connections  1024;
}


http {
    map $arg_f $forum {
        default 0;
        1 2;
    }

    server {
        location = /old.php {
            default_type  text/html;
            if ($forum) {
                return 200 "OK";
            }
            return 200 "KO";
        }
    }
}

Ele funciona perfeitamente, então a causa mais provável de seu problema é que sua configuração não é aplicada corretamente. Eu acho que as mudanças que você fez ao adicionar a diretiva map quebraram, tornando a variável forum inexistente.

Tente:

  1. Use nginx -t para validar sua configuração
  2. Monitore seu arquivo de log de erros enquanto você emite service nginx reload para detectar qualquer erro que possa acontecer no tempo de execução e que seja indetectável no momento da configuração.

Como observação, lembre-se de que usar produtos atualizados é sempre uma boa ideia.

  • No mínimo, use nginx v1.4.7 Changelog
  • Melhor ainda, use pelo menos a versão estável (atualmente sendo v1.6.2) Changelog

link

    
por 03.11.2014 / 18:31

Tags