共计 635 个字符,预计需要花费 2 分钟才能阅读完成。
Nginx 下常见的 301 跳转有以下三种,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。
第一种:使用 rewrite 指令,通过正则匹配所有的 URI 后再去掉开头第一个 /(反斜线)。
rewrite ^/(.*)$ https://www.hi-linux.com/$1;
第二种:同样使用 rewrite 指令,不同的是通过 $request_uri 变量匹配所有的 URI。
rewrite ^ https://www.hi-linux.com$request_uri? permanent;
这样写的好处是省去了去掉开头第一个反斜线的过程,正则匹配上性能更优。
第三种:使用 return 指令,通过 301 状态码和 $request_uri 参数,直接告诉 Nginx 这是个 301 重定向和抓取指定 URI。
return 301 https://www.hi-linux.com$request_uri;
这种方法是性能上最优的,因为 rewrite 指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个 301 永久重定向。
通过以上三种写法介绍,我们可以看出 return 指令在 301 跳转上比 rewrite 指令性能上更加有优势。虽然在访问量不大的情况下几种写法的性能表现上区别并不大,不过在海量访问中一个小小的优化也能在提升业务系统性能上起到不小的作用哟!
正文完
星哥玩云-微信公众号