服务器的NodeJS HTTPS运行,但插座将无法连接(网:: ERR_CONNECTION_TIMED_OUT)
我设立一个服务的NodeJS子域,这样我可以使用socket.io。我通过https服务页面,并且让服务器正常运行。该页面已送达。这不是问题。问题是当我尝试将套接字连接到客户端时。我一直试图解决这个问题,我确信有很多有能力的人可以帮助我。服务器的NodeJS HTTPS运行,但插座将无法连接(网:: ERR_CONNECTION_TIMED_OUT)
这是我的地盘https://reward.cshive.com
错误消息我得到:
客户端
var socket = io.connect('https://reward.cshive.com:3000');
服务器端
const https = require('https');
var fs = require('fs');
const options = {
key: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/privkey.pem'),
cert: fs.readFileSync('/etc/letsencrypt/live/reward.cshive.com/cert.pem')
};
var app = https.createServer(options, (req, res) => {
fs.readFile(__dirname + '/served.html',
function (err, data) {
if (err) {
res.writeHead(500);
console.log('Error loading page');
return res.end('Error loading page');
}
console.log('--Connection');
res.writeHead(200);
res.end(data);
});
})
var server = app.listen(3000, function(err) {
if (err) {
console.log(err);
} else {
console.log("Listening on port 3000");
}
});
var io = require('socket.io').listen(server);
试试这个在您的
将这个服务器部分,路径socket.io可能change.For我这是/socket.io-client/
location /socket.io-client/ {
proxy_pass http://node_server;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
而且这
upstream node_server {
server 127.0.0.1:8080;
keepalive 15;
}
而且这样做
var socket = io.connect();你不会需要指定主机
谢谢,这不是我需要解决的问题。但肯定是修复 –
我建议让nginx的处理所有SSL相关的东西和节点JS摆脱它的主要部分。 当我看到你最终在这两个节点JS进行SSL以及nginx的做法。 不妨让nginx的做到这一点。 –
那么,我试图在nodejs中创建一个http服务器。但浏览器会拒绝加载资源,因为它们会被标记为不安全。 –
当你说“的页面送达”,你的意思是哪一页?我最初认为你的意思是代码中提到的页面(来自文件'served.html'),但我似乎无法访问它。我无法从端口3000获得任何响应,所以它可以是代理或防火墙问题,也可以是服务器甚至没有运行的简单事情。 – skirtle
对不起,我应该进一步澄清。我的意思是,文件serve.html由节点提供服务。我知道这一点,因为当我不做“node server.js”时,我从nginx得到一个“502坏的网关”。我确实设置了proxy_pass以允许通过位于我的位置块中的端口3000的请求可用。如果能帮助解决问题,我会在学校回来时添加配置。但是,你的意思是防火墙。哪一个? –
我还没有尝试过自己,但这个看起来像,而不是试图直接暴露节点到世界上的3000端口https://gist.github.com/uorat/10b15a32f3ffa3f240662b9b0fefe706 – skirtle