nginx:URL重写和性能

我有一个网站,我需要改变的url结构。 旧url看起来像/olddir/part1_de.htm ,新url看起来像/newdir/sub/category/anotherpage.htm 。 有很多我需要做的URL重写,最后我假设大概有500个不同的重写。

由于我的网站stream量很大,我主要关心的是目前的性能。 我的问题是:

  • 我假设对于每个请求,重写块将被parsing,正则expression式将被评估。 我对吗?
  • 如果我使用这些重写,会有性能损失吗? nginx能处理这个吗?
  • 进行大量重写时,是否有任何“最佳实践”?

您可能会发现地图模块执行得更好,特别是如果大多数URL实际上不需要是正则expression式。 例如(未testing):

 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; } 

Nginx在初始启动或configuration重载期间(不是每个请求)将其configuration编译成某种二叉树。 所以使用重写是可以的,但推荐的选项是,尽可能使用try_files指令。