云网牛站
所在位置:首页 > Linux云服务器 > 在Nginx上几种常见实现301重定向方法上的区别

在Nginx上几种常见实现301重定向方法上的区别

2018-06-26 11:14:14作者:hi-linux稿源:运维之美

在Linux云服务器上搭建Nginx,如果需要做301跳转,那么在Nginx下常见的301跳转有以下三种方法,虽然都能达到同样的目的。但是三种写法上还是有区别的,主要的区别是在正则匹配的性能上。本文以云网牛站(https://ywnz.com)为例详细为你讲解。

 

第一种方法

使用rewrite指令,通过正则匹配所有的URI后再去掉开头第一个/(反斜线)。

rewrite ^/(.*)$ https://ywnz.com/$1;

 

第二种方法

同样使用rewrite指令,不同的是通过$request_uri变量匹配所有的URI。

rewrite ^ https://ywnz.com$request_uri? permanent;

这样写的好处是省去了去掉开头第一个反斜线的过程,正则匹配上性能更优。

 

第三种方法

使用return指令,通过301状态码和$request_uri参数,直接告诉Nginx这是个301重定向和抓取指定URI。

return 301 https://ywnz.com$request_uri;

这种方法是性能上最优的,因为rewrite指令有很多写法和规则,执行完所有正则匹配后,Nginx 才会知道这是一个301永久重定向。

 

总结

通过以上三种写法介绍,我们可以看出return指令在301跳转上比rewrite指令性能上更加有优势。虽然在访问量不大的情况下几种写法的性能表现上区别并不大,不过在海量访问中一个小小的优化也能在提升业务系统性能上起到不小的作用。

 

云网牛站目前使用的是LAMP,301跳转代码

云网牛站使用的是LAMP,即Linux+Apache+MySQL+PHP构建,操作系统是CentOS,跳转代码我们的设置如下:

# 301

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://ywnz.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^ywnz.com [NC]

RewriteRule ^(.*)$ https://ywnz.com/$1 [L,R=301]

 

相关主题

HTTPS加密简介以及Nginx安装Let’s Encrypt免费SSL/TLS证书

精选文章
热门文章