我一直在尝试通过正在处理的node.js项目来设置HTTPS。对于该示例,我基本上遵循了node.js文档:
// curl -k https://localhost:8000/
var https = require('https');
var fs = require('fs');
var options = {
key: fs.readFileSync('test/fixtures/keys/agent2-key.pem'),
cert: fs.readFileSync('test/fixtures/keys/agent2-cert.pem')
};
https.createServer(options, function (req, res) {
res.writeHead(200);
res.end("hello world\n");
}).listen(8000);
现在,当我做
curl -k https://localhost:8000/
我懂了
hello world
如预期的那样。但是如果我这样做
curl -k http://localhost:8000/
我懂了
curl: (52) Empty reply from server
回想起来,这样做似乎很明显,但与此同时,最终访问我项目的人不会输入https:// yadayada,我希望从点击起就将所有流量都设为https网站。
我如何获得节点(以及Express,因为我正在使用的框架)将所有传入流量传递给https,而不管是否指定了它?我还没有找到解决此问题的任何文档。还是只是假设在生产环境中,节点位于它前面的东西(例如nginx)可以处理这种重定向?
这是我第一次涉足Web开发,所以如果这很明显,请原谅我的无知。
您可以实例化2个Node.js服务器-一个用于HTTP和HTTPS
您还可以定义两个服务器都将执行的设置功能,因此您不必编写太多重复的代码。
这是我的方法:(使用restify.js,但也应该适用于express.js或节点本身)
http://qugstart.com/blog/node-js/node-js-restify-server-with-both-http-and-https/