繁体   English   中英

Socket.IO,SSL,nginx,目录路径

[英]Socket.IO, SSL, nginx, directory path

因此,我使用socket.io(服务器)的独立版本->我没有声明任何“ http服务器”,它看起来非常像这样:

var io = require('socket.io')();
io.on('connection', function(socket){});
io.listen(3001);

问题:我在生产环境中的网站完全是HTTPS 当我尝试连接到它( io.connect("https://www.mysite.com:3001") )时,我得到了ERR_SSL_PROTOCOL_ERROR(已在Chrome浏览器中测试)。

当我关闭服务器时,我得到了ERR_CONNECTION_REFUSED。 因此,我得出一个结论,Node.JS无法处理HTTPS / SSL连接。

我的开发环境是基于HTTP的,所以我在那里没有问题-它像一个魅力。

因此,然后我决定尝试使用nginx将HTTPS代理传递给HTTP连接。

AFAIK,在这里我只有几个选项可以区分Node.JS连接和主应用程序连接:

a)子域(〜node.mysite.com)

b)目录(〜mysite.com/node)

我选择了后者,因为它易于实现。

因此,我在主“服务器”配置中添加了以下内容(在主应用之前):

location /node {
   proxy_pass http://127.0.0.1:3001;
   proxy_redirect off;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
}

然后我尝试连接: io.connect("https://www.mysite.com/node") ,但是无论我得到404(未找到) 我什至尝试了这一点: io.connect("https://www.mysite.com", {path : /node/}) (不带斜杠),并尝试重命名资源的 路径等等。

但无济于事。

当我在浏览器中访问此页面时(以及服务器启动并运行时)-我看到一个白页。

我做错了什么吗? 这个可以解决吗? 谢谢大家

我也像这样在SSL上使用了socket.IO连接..它对我来说很好...我正在使用Express Engine

 var options = {
  key: fs.readFileSync('./key.pem', 'utf8'),
  cert: fs.readFileSync('./server.crt', 'utf8')
 };

 var app = require('./app');
 var server = require('https').createServer(options, app),
 io = require('socket.io').listen(server);
 server.listen(port);
 io.sockets.on('connection', function (socket) {
 });

在客户端

<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io.connect('https://localhost:2406');
// on connection to server, ask for user's name with an anonymous callback
socket.on('connect', function(){});
</script>

决定使用子域。 因为我想将连接处理委托给Nginx而不是使用Node.JS本身来完成。 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM