nginx 301重定向方案 https安全网址跳转

 更新时间:2020年7月8日 13:22  点击:495

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指令性能上更加有优势。虽然在访问量不大的情况下几种写法的性能表现上区别并不大,不过在海量访问中一个小小的优化也能在提升业务系统性能上起到不小的作用哟!

下面重点来了

带https的没有www的域名跳转到 https://www....的方法


直接上conf  配置如下:

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

server
    {
        listen 443 ssl;
        server_name zhuxianfei.com;
		return 301 https://www.zhuxianfei.com$request_uri;
    }
	

server
    {
        listen 443 ssl http2;
        #listen [::]:443 ssl http2;
        server_name www.zhuxianfei.com;
        index index.html index.htm index.php default.html default.htm default.php;
        root  /home/wwwroot/www.zhuxianfei.com/;
        ssl on;
        ssl_certificate /usr/local/nginx/conf/ssl/www.zhuxianfei.com/fullchain.cer;
        ssl_certificate_key /usr/local/nginx/conf/ssl/www.zhuxianfei.com/www.zhuxianfei.com.key;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        #省略下面的代码
      }


跳转的https可以不挂载证书

[!--infotagslink--]

相关文章