一个里程碑,新网站实现全站https
本地验证node服务没问题后,上传到阿里云服务器上,发现无法访问。一开始以为是SSL证书有问题,去腾讯云SSL证书重新下载,还是不行。然后改node应用文件代码app.js,猜测是crt证书应该改成pem证书。花了很长时间研究怎么把crt证书改成pem的,没有研究出来。实在没招了,去腾讯云域名解析猜测着改,唉,还是不行。我快绝望了。
忽然灵光一现,想起了阿里云的安全组。之前访问阿里云的22端口无法访问,发现是阿里云安全组把22端口封掉了,需要自己开启,我去安全组看了下,果然没有开启443端口。开启后,终于可以访问了!
接下来做完80向443的跳转,无www的向有www的跳转,404和500错误跳转,然后按时写网站内容就可以了。
80向443的跳转
app.js里同时写两个express(),app1是访问80端口时的对象,app2是访问443端口时的对象,在访问80时,我们做了301跳转到443。注意,重定向函数要写在设置静态文件夹之前,否则会先直接访问静态文件夹的index.html了。因为路由规则是相同的路由,谁先定义的先访问谁。
var app1 = express();
var app2 = express(); app1.get("*", (req, res, next) => {
var host = req.headers.host;
host = host.replace(/\:\d+$/, '');
res.redirect(301, `https://${host}${req.path}`); }); app1.use(express.static(path.join(__dirname, 'public')));
app2.use(express.static(path.join(__dirname, 'public'))); http.createServer(app1).listen(80);
https.createServer(options, app2).listen(443);
无www的向有www的跳转
app1.get("*", (req, res, next) => {
var host = req.headers.host;
host = host.replace(/\:\d+$/, '');
console.log(host)
console.log('------')
if (host.startsWith('www.')) {
res.redirect(301, `https://${host}${req.path}`);
} else {
res.redirect(301, `https://www.${host}${req.path}`);
}
});
app2.get("*", (req, res, next) => {
var host = req.headers.host;
host = host.replace(/\:\d+$/, '');
if (host.startsWith('www.')) {
next();
} else {
res.redirect(301, `https://www.${host}${req.path}`);
}
});
app1.use(express.static(path.join(__dirname, 'public')));
app2.use(express.static(path.join(__dirname, 'public')));
404错误跳转,需要根据hexo的主题再写一个单独的404.html页面
app2.use(function (req, res, next) {
res.status(404).sendFile( __dirname + "/public/" + "index.html" );
});

一个里程碑,新网站实现全站https的更多相关文章
- 实现全站 HTTPS ,为什么国内网站总是那么slow&&low呀!
1 https://konklone.com/post/switch-to-https-now-for-free# https://theintercept.com/2014/11/20/non-pr ...
- 分享一个编程学习网站:https://github.com/justjavac/free-programming-books-zh_CN
分享一个编程学习网站:https://github.com/justjavac/free-programming-books-zh_CN
- 全站 HTTPS 来了
!版权声明:本文为腾讯Bugly原创文章,转载请注明出处腾讯Bugly特约作者:刘强 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 ...
- 全站 HTTPS 来了(转载)
转载:本文为腾讯Bugly原创文章. 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护.仔细观察,会发现这些网站已 ...
- 【转】互联网全站HTTPS的时代已经到来
原文地址:http://blog.csdn.net/luocn99/article/details/39777707 前言 我目前正在从事HTTPS方面的性能优化工作.在HTTPS项目的开展过程中明显 ...
- 【转贴】全站 HTTPS 来了
http://geek.csdn.net/news/detail/48765 作者:腾讯TEG架构平台部静态加速组高级工程师 刘强 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部 ...
- 转《本文为腾讯Bugly原创文章 ---全站 HTTPS 来了》
最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护.仔细观察,会发现这些网站已经全站使用 HTTPS.同时,iOS ...
- 跑步进入全站 HTTPS ,这些经验值得你看看
随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在前几天,免费提供证书服务的 Let’s Encrypt 项目也正式开放测试,HTTPS 很快就会成为 WE ...
- 八大免费SSL证书-给你的网站免费添加Https安全加密
评论» https://www.freehao123.com/top-8-free-ssl-cert/ 文章目录 Let's Encrypt StartSSL SSL CloudFlare SSL ...
随机推荐
- 如何在本地运行查看github上的开源项目
看中了一款很多星星的github的项目,想把这个项目拉到自己的电脑上运行查看项目效果,该怎么做?示例:我们今天要看的 github项目地址:https://github.com/lzxb/vue-cn ...
- SorceTree 与 Bitbucket连接
选择bitbucket,由于bitbucket免费的帐号最多能够8个人一起协同开发.我们项目组人数少于8个,私有仓库也不限制. 经过半个多月的应用,大家感觉也还不错,对个人而言.在家也能訪问代码,对公 ...
- ElasticSearch 2.4
ES是一个基于Lucene的分布式全文搜索服务器,和SQL Server的全文索引(Fulltext Index)有点类似,都是基于分词和分段的全文搜索引擎,具有分词,同义词,词干查询的功能,但是ES ...
- nginx启用https访问
什么是https? https 全称:Hyper Text Transfer Protocol over Secure Socket Layer,是http的安全版.即http下加入SSL协议层,因此 ...
- Springboot + shiro 整合之Url拦截设置(转)
shiro 整合到springboot 还是比较简单的,只需要新建一个spring-shiro.xml的配置文件: <span style="font-size:14px;" ...
- Ubuntu 16.04/16.10安装 KDE Plasma
KDE目前的最新版本是Plasma 5.7(2016-10).Ubuntu默认的桌面环境是Unity,下面记录怎么在Ubuntu 16.04/16.10上安装KDE. Ubuntu 16.04/16. ...
- u-boot-2011.06在基于s3c2440开发板的移植之引导内核与加载根文件系统
http://www.linuxidc.com/Linux/2012-09/70510.htm 来源:Linux社区 作者:赵春江 uboot最主要的功能就是能够引导内核启动.本文就介绍如何实现该 ...
- php 小程序获取渠道二维码 保存
function ppost($url,$arr){ $post_data = json_encode($arr); $url=$url; $ch = curl_init(); curl_setopt ...
- Android事件分发机制具体解释
转载注明出处:http://blog.csdn.net/xiaohanluo/article/details/52416141 1. 概述 Android日常研发时,与View接触占领相当多的时间.而 ...
- 应用 Valgrind 发现 Linux 程序的内存问题及交叉编译for arm
Valgrind 概述 体系结构 Valgrind是一套Linux下,开放源代码(GPL V2)的仿真调试工具的集合.Valgrind由内核(core)以及基于内核的其他调试工具组成.内核类似于一个框 ...