现在Google等引擎对带ssl证书的网站有SEO加成,而且现在免费SSL证书的门槛也越来越低了,很多个人博客也可以换上漂亮的小绿标https,但是申请证书并导入nginx后,怎样使游客访问网站能做到自动跳转到https呢,下面介绍使用Nginx来实现用户访问http跳转值https的几种方式


1、301跳转方式

介绍:301 redirect: 301 代表永久性转移(Permanently Moved)
301的重定向就是说浏览器在拿到server返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)
Nginx下使用 ruturn ${http_code} 来处理指定的状态码。因此我们使用return 301来实现跳转。
在nginx网站配置文件中,添加如下字段

if ($scheme = http ) {
        return 301 https://$host$request_uri;
        }

当用户输入URL为http时,将使用301实现往HTTPS的跳转,这也是本站使用的方式。


2、rewrite方式

Rewirte规则也称为规则重写,主要功能是实现浏览器访问HTTP URL的跳转,其正则表达式是基于Perl语言。

   if ( $scheme = http ){    
        rewrite  ^(.*)  https://$server_name$1 permanent; 
    }  

3、meta方式

由于以上两种方式都会调用nginx,从而消耗一定的服务器资源,而大型互联网公司为了节省资源,常常使用这种方式(例如百度公司会将baidu.com跳转至www.baidu.com)
首先在nginx网站配置中将index和404改为meta.html

server {
    ...
    index  meta.html;
    error_page 404 meta.html;
    ···
}

接下来在meta.html中写入

<html>
  <meta http-equiv="refresh" content="0; url=${你要跳转的目标地址}">
</html>

不过这种方案的缺点就是不能实现变量跳转,而只能实现静态跳转,即跳转到固定的URL

Last modification:October 15th, 2020 at 06:17 pm