nginx: reescrita e desempenho de URL

1

Eu tenho um site em que preciso alterar a estrutura da URL. Os URLs antigos parecem com /olddir/part1_de.htm , os novos serão parecidos com /newdir/sub/category/anotherpage.htm . Há muitas reescritas de URL que preciso fazer, eu suponho que cerca de 500 reescritas distintas no final.

Como meu site recebe bastante tráfego, minha principal preocupação é com o desempenho no momento. Minhas perguntas são:

  • Suponho que, para cada solicitação, o bloco de reconfigurações será analisado e a regex será avaliada. Estou certo?
  • Haverá uma penalidade de desempenho se eu usar essas reescritas? O nginx pode lidar com isso?
  • Há alguma "melhor prática" a seguir ao fazer muitas reescritas?
por j0nes 24.10.2012 / 14:16

2 respostas

2

Você pode encontrar o módulo de mapa para ter um melhor desempenho, especialmente se a maioria das URLs não precisar ser expressões regulares . Por exemplo (não testado):

map $uri $new {
    /olddir/part1_de.htm    /newdir/sub/category/anotherpage.htm;
    ~^/olddir/part(?<num>[0-9]+)_en.htm$    /newdir/sub/category/part$num;
    ...
}

if ($new) {
    rewrite ^ $new permanent;
}
    
por 25.10.2012 / 00:25
1

O Nginx compila sua configuração em algum tipo de árvore binária durante o início inicial ou no recarregamento da configuração (não com cada solicitação). Portanto, não há problema em usar reescrevemos, mas a opção recomendada e a melhor prática é usar a diretiva try_files quando possível.

    
por 24.10.2012 / 17:16

Tags