本地验证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的更多相关文章

  1. 实现全站 HTTPS ,为什么国内网站总是那么slow&&low呀!

    1 https://konklone.com/post/switch-to-https-now-for-free# https://theintercept.com/2014/11/20/non-pr ...

  2. 分享一个编程学习网站:https://github.com/justjavac/free-programming-books-zh_CN

    分享一个编程学习网站:https://github.com/justjavac/free-programming-books-zh_CN

  3. 全站 HTTPS 来了

    !版权声明:本文为腾讯Bugly原创文章,转载请注明出处腾讯Bugly特约作者:刘强 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 ...

  4. 全站 HTTPS 来了(转载)

    转载:本文为腾讯Bugly原创文章. 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护.仔细观察,会发现这些网站已 ...

  5. 【转】互联网全站HTTPS的时代已经到来

    原文地址:http://blog.csdn.net/luocn99/article/details/39777707 前言 我目前正在从事HTTPS方面的性能优化工作.在HTTPS项目的开展过程中明显 ...

  6. 【转贴】全站 HTTPS 来了

    http://geek.csdn.net/news/detail/48765 作者:腾讯TEG架构平台部静态加速组高级工程师 刘强 最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部 ...

  7. 转《本文为腾讯Bugly原创文章 ---全站 HTTPS 来了》

    最近大家在使用百度.谷歌或淘宝的时候,是不是注意浏览器左上角已经全部出现了一把绿色锁,这把锁表明该网站已经使用了 HTTPS 进行保护.仔细观察,会发现这些网站已经全站使用 HTTPS.同时,iOS ...

  8. 跑步进入全站 HTTPS ,这些经验值得你看看

    随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS.就在前几天,免费提供证书服务的 Let’s Encrypt 项目也正式开放测试,HTTPS 很快就会成为 WE ...

  9. 八大免费SSL证书-给你的网站免费添加Https安全加密

    评论»   https://www.freehao123.com/top-8-free-ssl-cert/ 文章目录 Let's Encrypt StartSSL SSL CloudFlare SSL ...

随机推荐

  1. C++ 多线程阻塞 (多线程同步)(MsgWaitForMultipleObjects)(连着消息一起控制,牛)

    在主线程定要禁止使用waitforsingleobject(),原因是会阻塞主线程的消息循环,所以必须使用另一种 MsgWaitForMultipleObjects,即可以让消息通过,下面就是一个基于 ...

  2. Codeforces Round #450 (Div. 2) D.Unusual Sequences (数学)

    题目链接: http://codeforces.com/contest/900/problem/D 题意: 给你 \(x\) 和 \(y\),让你求同时满足这两个条件的序列的个数: \(a_1, a_ ...

  3. HDU 6217 BBP Formula (数学)

    题目链接: HDU 7217 题意: 题目给你可以计算 \(π\) 的公式: \(\pi = \sum_{k=0}^{\infty}[\frac{1}{16^k}(\frac{4}{8k+1})-(\ ...

  4. Javascript和jquery事件--事件监听器

    之前看完了js和jq的冒泡捕获和事件对象event,这里看看同时使用js和jq后我最容易混淆的监听器的绑定. (1) js的监听器绑定解绑 绑定监听器有两种方式: a.on-事件type,比如oncl ...

  5. 3、U-boot的环境变量: bootcmd 和bootargs

    u-bootcmdbootcmd是uboot自动启动时默认执行的一些命令,因此你可以在当前环境中定义各种不同配置,不同环境的参数设置,然后设置bootcmd为你经常使用的那种参数.   现在我的boo ...

  6. AM335x(TQ335x)学习笔记——Nand&&网卡驱动移植

    移植完毕声卡驱动之后本想再接再励,移植网卡驱动,但没想到的是TI维护的内核太健壮,移植网卡驱动跟之前移植按键驱动一样简单,Nand驱动也是如此,于是,本人将Nand和网卡放在同一篇文章中介绍.介绍之前 ...

  7. 数据结构与算法实验题 4.2 Who is the strongest

    数据结构与算法实验题 4.2 Who is the strongest ★实验任务 在神奇的魔法世界,召唤师召唤了一群的魁偶.这些魁偶排成一排,每个魁偶都有一个 战斗值.现在该召唤师有一个技能,该技能 ...

  8. Java随机验证吗

    <span style="font-size:18px;">package com.java.process.jsp; import java.awt.Color; i ...

  9. php面试题8

    php面试题8 一.总结 二.php面试题8 1.表单数据提交方式 POST 和 GET 的区别,URL 地址传递的数据最大长度是多少?$_GET 传参是请求 HTTP 协议通过 url 参数传递和接 ...

  10. ajax上传图片文件

    这里用的是一个隐藏的iframe,这样可以让form表单提交到这个iframe里面,用户就看不到页面的刷新了 前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题 ...