根据对此问题的回答:
How do I configure nodejs/expressjs to serve pages over https?
我一直试图建立相当于:
var express = require('express');
var fs = require("fs");
var crypto = require('crypto');
var app = express.createServer();
var appSecure = express.createServer();
var privateKey = fs.readFileSync('privatekey.pem').toString();
var certificate = fs.readFileSync('certificate.pem').toString();
var credentials = crypto.createCredentials({key: privateKey, cert: certificate});
appSecure.setSecure(credentials);
app.get('/secretStuff', function(req,res) {
//redirect to https
}
appSecure.get('/secretStuff', function(req, res) {
//show you the secret stuff
}
这是当前发布的expressjs和2.4节点可以实现的吗?
解决方法:
是的,这可以完成,看起来你已经拥有了你需要的大部分内容.只需在app.get处理程序中发送重定向即可
app.get('/secretStuff', function(req,res) {
res.redirect('https://' + req.header('Host') + req.url);
}
还要确保你执行app.listen(80)和appSecure.listen(443)之类的操作来实际启动相应端口上的服务器.否则,请确保使用正确的端口构造HTTPS URL.对于生产,这个东西通常在你的app服务器(node.js)之外使用像nginx这样的反向代理处理.在nginx中执行此操作是微不足道的,这将使您的node.js进程以非root用户身份运行,并且无需客户端直接连接到node.js,这不像nginx那样用于提供实时内部TCP连接. (我在这里解释Ryan Dahl).
原文地址:https://codeday.me/bug/20190630/1339955.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。