-
前几天,我基于nginx搭建了一个https访问的虚拟主机,监听的域名是idc.chendexin.com,但是很多用户不清楚https和http的区别,会很容易敲成 http://idc.chendexin.com,这时会报出404错误,所以我需要做基于idc.chendexin.com域名的http向https的强制跳转。我总结了三种方式,跟大家共享一下。
nginx的rewrite方法
思路
这应该是大家最容易想到的方法,将所有的http请求通过rewrite重写到https上即可。
配置
server { listen 192.168.1.111:80; server_name idc.chendexin.com; rewrite ^(.*)$ https://$host$1 permanent; }
搭建此虚拟主机完成后,就可以将 http://idc.chendexin.com 的请求全部重写到 https://idc.chendexin.com 上了。
nginx的497状态码
error code 497
497 - normal request was sent to HTTPS
解释:当此虚拟站点只允许https访问时,当用http访问时nginx会报出497错误码。
思路
利用error_page命令将497状态码的链接重定向到https://test.com这个域名上
配置
server { listen 192.168.1.11:443; #ssl端口 listen 192.168.1.11:80; #用户习惯用http访问,加上80,后面通过497状态码让它自动跳到443端口 server_name idc.chendexin.com; #为一个server{......}开启ssl支持 ssl on; #指定PEM格式的证书文件 ssl_certificate /etc/nginx/idc.chendexin.pem; #指定PEM格式的私钥文件 ssl_certificate_key /etc/nginx/test.key; #让http请求重定向到https请求 error_page 497 https://$host$uri?$args; }
index.html刷新网页
思路
上述两种方法均会耗费服务器的资源,我们用curl访问baidu.com试一下,看百度的公司是如何实现baidu.com向www.baidu.com的跳转。
可以看到百度很巧妙的利用meta的刷新作用,将baidu.com跳转到www.baidu.com.因此我们可以基于http://test.com的虚拟主机路径下也写一个index.html,内容就是http向https的跳转。
index.html
<html> <meta http-equiv="refresh" content="0;url=https://test.com/"> </html>
nginx虚拟主机配置
server { listen 192.168.1.11:80; server_name idc.chendexincom; location / { #index.html放在虚拟主机监听的根目录下 root /srv/www/http.idc.chendei.com/; } #将404的页面重定向到https的首页 error_page 404 https://idc.chendexin.com/; }
上述三种方法均可以实现基于nginx强制将http请求跳转到https请求,大家可以评价一下优劣或者根据实际需求进行选择。
然后又找到了这个javascript跳转的方法,在需要跳转的页面加入此代码即可,暂时不清楚有没有弊端。
代码如下:
<script type="text/javascript"> var url = window.location.href; if (url.indexOf("https") < 0) { url = url.replace("http:", "https:"); window.location.replace(url); } </script>
HTTP跳转到HTTPS的解决办法
5714人参与 |分类: 站长百科|时间: 2015年11月27日
相关文章
- 2020-01-10作为站长应该懂得的7大搜索引擎站长平台
- 2019-10-22个人博客网站用什么程序比较好?
- 2019-10-12头条搜索站长平台如何添加网站和sitemap文件?附图文教程
- 2019-09-26PHP环境下是选择Apache和Nginx?
- 2019-09-11网站运维人员必做的7项网站维护工作
- 2019-08-26现在还要必要坚持做PC网站或个人博客吗?
- 2019-08-03宝塔面板+云锁nginx自编译web防护的图文教程
- 2019-07-08解决国内主机服务器 WordPress 后台异常卡顿的问题
- 2019-07-02网站启用SSL自动301跳转到HTTPS教程
- 2019-06-06宝塔/BT面板内存占用MySQL频繁崩溃自动重启方法
评论专区德信商城