nginx:URL 重写和性能

nginx:URL 重写和性能

我有一个网站,需要更改 URL 结构。旧 URL 看起来像/olddir/part1_de.htm,新 URL 看起来像/newdir/sub/category/anotherpage.htm。我需要进行大量 URL 重写,我估计最终大约需要进行 500 次不同的重写。

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

  • 我假设对于每个请求,都会解析重写块并评估正则表达式。我是对的吗?
  • 如果我使用这些重写,性能会受到影响吗?nginx 可以处理这个问题吗?
  • 在进行大量重写时是否有任何“最佳实践”可供遵循?

答案1

您可能会发现地图模块以获得更好的性能,特别是如果大多数 URL 实际上不需要正则表达式。例如(未测试):

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

答案2

Nginx 在初始启动或配置重新加载时(而不是每次请求时)将其配置编译为某种二进制树。因此可以使用重写,但推荐的选项和最佳实践是尽可能使用 try_files 指令。

相关内容