现在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