【发布时间】:2017-07-10 21:26:58
【问题描述】:
我尝试设置一些 mod_proxy 方法(下面的链接),但是当它处于活动状态时,它会给我一个服务不可用消息,(对不起,不是服务器/系统管理员)
我们有一个没有任何 SSL 的开发服务器,它运行良好。
到目前为止我们的代码(nodejs/server.js):
var app = require("express")();
var https = require("https");
var io = require("socket.io")(https);
var port = 3000;
var privateKey = fs.readFileSync('/etc/apache2/ssl-certificate/site.key', 'utf8'); // change with your ssl .key file
var certificate = fs.readFileSync('/etc/apache2/ssl-certificate/site.crt', 'utf8'); // change with your ssl .crt file
option = {
key: privateKey,
cert: certificate
}
io.on("connection", function (socket) {
socket.on("message", function (data) {
console.log("message Recieved: " + JSON.stringify(data));
io.emit("conversation:" + data.conversation_id, data);
});
socket.on("chat_attachment", function (data) {
console.log("message Recieved: " + JSON.stringify(data));
io.emit("conversation:" + data.conversation_id, data);
});
});
https.createServer(option, app).listen(port, '0.0.0.0', function () {
console.log("Listening on Port " + port);
});
相同的代码,但没有 SSL 配置,可以在我们的开发服务器上使用普通的 HTTP。
我尝试遵循以下建议:
【问题讨论】:
-
在 Apache 实例上终止您的 SSL,让节点只担心 http。如果服务器在端口 3000 上阻止入站 http,则一切就绪。
-
但这不会删除 https 吗?重点是使用带有 SSL (HTTPS) 的 Apache 为站点提供服务,并且让 nodejs 仅适用于我们构建的实时聊天功能。我们想保留 https。
-
不,您通过 apache 作为反向代理通过管道传输所有 https。您不允许从外部世界直接 https 或 http 访问您的节点应用程序,这一切都通过 apache 汇集
-
您好 Diego Ponciano 是否能够部署它。我遇到了类似的问题。
-
嗨,Abhishek,是的,我们使用了@Paul 推荐的反向代理,虽然我不知道细节,因为我不是系统管理员,我们设置了一个子域 backend.domain.com解析端口 3000
标签: node.js apache ssl digital-ocean socket.io-1.0