我应该在哪里实现我的 url 重定向块?

我应该在哪里实现我的 url 重定向块?

我有数百个 URL 重定向需要实现,但我不太确定实现重定向块的最佳、最有效位置是哪里:在 Varnish 服务器上还是在 Nginx 服务器上。架构如下所示:

在此处输入图片描述

我倾向于在 varnish 服务器上实现它,因为它是 CDN 之后的第一个停靠港。

请就此问题或潜在问题提出建议。谢谢。

答案1

实际上我认为你应该在 nginx 中实现重定向。原因如下:

Varnish 确实可以创建合成重定向,但它必须if对每个请求进行冗长的比较,添加的重定向越多,速度就越慢。n)。

在 nginx 中,你可以创建一个map如下所示。由于map存储在哈希表中,因此查找速度要快得多,大约(日志n)。只有少数重定向时差异并不重要,但数百次重定向之后差异可能会变得明显。之后57,000, 这将是非常慢用清漆。

此外,清漆现在可以缓存重定向,而不必在每次请求时都重新创建它们。

nginx 中的设置如下所示:创建map旧的和新的 URL,例如:

map $uri $new_uri {
    /sofa.html /living/sofas/
    /beds.html /bedroom/beds/
}

然后在server执行重定向的块中,只需添加一个测试来查看其中一个 URL 是否匹配,如果匹配则进行重定向:

if ($new_uri) {
   return 301 $new_uri;
}

相关内容