Node.js NodeJ在HTTP和HTTPS上侦听单个域名
我在AWS(亚马逊网络服务器)上使用express和服务器云,以及DNS“mydomain.com” 问题:如何避免我的用户不得不在浏览器中写入URL:和 这是我的代码: sudo节点app.jsNode.js NodeJ在HTTP和HTTPS上侦听单个域名,node.js,ssl,amazon-web-services,express,https,Node.js,Ssl,Amazon Web Services,Express,Https,我在AWS(亚马逊网络服务器)上使用express和服务器云,以及DNS“mydomain.com” 问题:如何避免我的用户不得不在浏览器中写入URL:和 这是我的代码: sudo节点app.js var app = express(); var server = http.createServer(app).listen(4000, function() { console.log('Express HTTP server listening on port ' + app.g
var app = express();
var server = http.createServer(app).listen(4000, function() {
console.log('Express HTTP server listening on port ' + app.get('port'));
});
var server = https.createServer(credentials, app).listen(3000, function() {
console.log('Express HTTPS server listening on port 3000');
});
// redirect all http requests to https
app.use(function(req, res, next) {
if(!req.secure) {
return res.redirect(['https://mydomain.com', req.url].join(''));
}
next();
});
我希望我的用户能够写我的域名使用http和https没有端口号。我已经有了一个SSL证书,一切正常,但我还不能删除端口号并同时使用:https和http
有什么想法吗?请:)
我使用meanstack(Mongo、Express、Angular等)唯一的方法是使用协议的默认端口。也就是说,端口80用于HTTP,端口443用于HTTPS 如果不使用默认协议端口,则浏览器(或用户正在使用的任何客户端)确定连接到哪个端口的唯一方法是用户在URL中指定它 编辑-解决您在上面对不同服务器对象的评论 在问题中的代码中,您创建了一个HTTP服务器,然后使用变量
server
保存对该对象的引用。然后创建一个HTTPS服务器并将其分配给同一个变量。如果稍后在代码中使用server
变量,则将处理HTTPS服务器对象,但无法引用HTTP服务器对象
要解决这个问题,只需使用两个不同的变量来保存对象引用
var httpServer = http.createServer ....
var httpsServer = https.createServer ....
唯一的方法是使用协议的默认端口。也就是说,端口80用于HTTP,端口443用于HTTPS 如果不使用默认协议端口,则浏览器(或用户正在使用的任何客户端)确定连接到哪个端口的唯一方法是用户在URL中指定它 编辑-解决您在上面对不同服务器对象的评论 在问题中的代码中,您创建了一个HTTP服务器,然后使用变量
server
保存对该对象的引用。然后创建一个HTTPS服务器并将其分配给同一个变量。如果稍后在代码中使用server
变量,则将处理HTTPS服务器对象,但无法引用HTTP服务器对象
要解决这个问题,只需使用两个不同的变量来保存对象引用
var httpServer = http.createServer ....
var httpsServer = https.createServer ....
唯一的方法是使用协议的默认端口。也就是说,端口80用于HTTP,端口443用于HTTPS 如果不使用默认协议端口,则浏览器(或用户正在使用的任何客户端)确定连接到哪个端口的唯一方法是用户在URL中指定它 编辑-解决您在上面对不同服务器对象的评论 在问题中的代码中,您创建了一个HTTP服务器,然后使用变量
server
保存对该对象的引用。然后创建一个HTTPS服务器并将其分配给同一个变量。如果稍后在代码中使用server
变量,则将处理HTTPS服务器对象,但无法引用HTTP服务器对象
要解决这个问题,只需使用两个不同的变量来保存对象引用
var httpServer = http.createServer ....
var httpsServer = https.createServer ....
唯一的方法是使用协议的默认端口。也就是说,端口80用于HTTP,端口443用于HTTPS 如果不使用默认协议端口,则浏览器(或用户正在使用的任何客户端)确定连接到哪个端口的唯一方法是用户在URL中指定它 编辑-解决您在上面对不同服务器对象的评论 在问题中的代码中,您创建了一个HTTP服务器,然后使用变量
server
保存对该对象的引用。然后创建一个HTTPS服务器并将其分配给同一个变量。如果稍后在代码中使用server
变量,则将处理HTTPS服务器对象,但无法引用HTTP服务器对象
要解决这个问题,只需使用两个不同的变量来保存对象引用
var httpServer = http.createServer ....
var httpsServer = https.createServer ....
除了我回答的非默认端口问题之外,您的代码中还有一个问题,即您正在创建两个服务器对象,但将这两个对象都分配给一个变量。如果你想在代码中访问两个服务器,你需要两个不同的变量。我不明白你的答案,你能给我一个代码示例吗?please@AndrewCooper,我的应用程序非常广泛,如果我使用两个应用程序,我将不得不复制我的所有代码,但如何使用两个服务器对象和两个应用程序而不复制我的代码?除了我回答的非默认端口问题之外,您的代码中有一个问题,即您正在创建两个服务器对象,但将这两个对象都分配给一个变量。如果你想在代码中访问两个服务器,你需要两个不同的变量。我不明白你的答案,你能给我一个代码示例吗?please@AndrewCooper,我的应用程序非常广泛,如果我使用两个应用程序,我将不得不复制我的所有代码,但如何使用两个服务器对象和两个应用程序而不复制我的代码?除了我回答的非默认端口问题之外,您的代码中有一个问题,即您正在创建两个服务器对象,但将这两个对象都分配给一个变量。如果你想在代码中访问两个服务器,你需要两个不同的变量。我不明白你的答案,你能给我一个代码示例吗?please@AndrewCooper,我的应用程序非常广泛,如果我使用两个应用程序,我将不得不复制我的所有代码,但如何使用两个服务器对象和两个应用程序而不复制我的代码?除了我回答的非默认端口问题之外,您的代码中有一个问题,您正在创建两个服务器对象,但将这两个对象都分配给了一个