我可以配置expressjs 通过http 提供某些页面,通过https 提供其他页面吗?

2024-02-27

根据对这个问题的回答:

如何配置 nodejs/expressjs 通过 https 提供页面服务? https://stackoverflow.com/questions/5120989/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 和node 2.4 可以做到这一点吗?


是的,这是可以做到的,而且看起来您已经拥有了大部分所需的东西。只需在您的 app.get 处理程序中发送重定向

app.get('/secretStuff', function(req,res) {
  res.redirect('https://' + req.header('Host') + req.url);
}

还要确保你做了类似的事情app.listen(80) and appSecure.listen(443)在适当的端口上实际启动服务器。否则请确保使用正确的端口构建 HTTPS URL。对于生产,这件事通常是在应用程序服务器(node.js)之外使用反向代理来处理的,例如nginx。在 nginx 中执行此操作很简单,这将使您的 Node.js 进程以非 root 身份运行,并且无需让客户端直接连接到 Node.js,而 Node.js 不像 nginx 那样久经沙场,可以提供实时互联网 TCP 连接(我在这里解释瑞安·达尔本人)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以配置expressjs 通过http 提供某些页面,通过https 提供其他页面吗? 的相关文章

随机推荐