nginx - 哪种重定向方式更好以及原因

nginx - 哪种重定向方式更好以及原因

我想在 nginx 中从 www.mydomain.com 重定向到 domain.com。我搜索了互联网并找到了两种方法:

第一种方式

server {
            listen   80;
            server_name  www.domain.com;
            rewrite ^/(.*) http://domain.com/$1 permanent;
}

第二种方式

server {
            listen   80;
            server_name  www.domain.com;
            return 301 $scheme://domain.com$request_uri;
}

两种方法都行得通。但我该使用哪一种?为什么?

答案1

第二种方法更好...

server {
  listen   80;
  server_name  www.domain.com;
  return 301 $scheme://domain.com$request_uri;
}

为什么

让我直接引用官方 Nginx wiki 中的内容陷阱和常见错误

通过使用内置变量 $request_uri,我们可以有效地避免进行任何捕获或匹配,并且通过使用 return 指令,我们可以完全避免正则表达式的评估。

我自己的想法...

默认情况下,正则表达式成本高昂并且会降低性能。

相关内容