【发布时间】:2011-11-19 00:56:42
【问题描述】:
我一直在尝试使用我正在处理的 node.js 项目设置 HTTPS。对于这个例子,我基本上遵循了node.js documentation:
// 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,无论是否指定它?我无法找到任何解决此问题的文档。还是只是假设在生产环境中,node 前面有一些东西(例如 nginx)来处理这种重定向?
这是我第一次涉足网络开发,如果这是显而易见的事情,请原谅我的无知。
【问题讨论】: