node.js - 如何在 WHM CentOS7 中为与虚拟主机一起安装的 Socket.IO 设置 SSL?

标签 node.js ssl socket.io centos7

我当前的项目是在 CentOS 7 WHM 专用机器上使用 CPanel 为网站提供服务。我使用 node.js socket.io 向站点发送实时更新,nodejs 文件也与站点文件位于同一目录中。要连接我的 socket.io-client,这是我放在 .htaccess 文件中的内容:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sitename\.com\:8080$ [OR]
RewriteCond %{HTTP_HOST} ^www\.sitename\.com\:8080$
RewriteRule ^(.*) "http\:\/\/127\.0\.0\.1\:8080\/$1" [P,L]

在我的 server.js 中,我只是监听 8080 端口

server.listen(8080);

在我的 socket.io 客户端

var socket = io.connect('http://sitename.com:8080',
    {'force new connection':true,
    'transports':['websocket']});

一切正常,但我最近将 SSL 应用到站点并尝试在我的 socket.io-client 中使用 SSL 连接,我尝试将 .htaccess 更改为此:

RewriteEngine on
RewriteCond %{HTTPS_HOST} ^sitename\.com\:8080$ [OR]
RewriteCond %{HTTPS_HOST} ^www\.sitename\.com\:8080$
RewriteRule ^(.*) "http\:\/\/127\.0\.0\.1\:8080\/$1" [P,L]

和 socket.io-client 到

var socket = io.connect('https://sitename.com:8080',
    {'force new connection':true,
    'transports':['websocket']});

但是我无法连接到我的 nodejs 服务器。我当前的设置错误吗?有人可以指导我正确的方向吗?

最佳答案

事实证明,根本不需要上面的 .htaccess 代码。只需在 WHM 防火墙中添加 socket.io 使用的端口就足以建立连接,不需要反向代理。要使 https 与我的 socket.io 一起工作,只需修改 server.js 以使用 https 并使用正确的 key 和已安装的证书文件:

var https = require('https');
var fs = require('fs');
var prvKey = fs.readFileSync('../../ssl/keys/123.key').toString();
var prvCert = fs.readFileSync('../../ssl/cert/123.crt').toString();
var server = https.createServer({key:prvKey,cert:prvCert});
server.listen(8080);

关于node.js - 如何在 WHM CentOS7 中为与虚拟主机一起安装的 Socket.IO 设置 SSL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49397132/

相关文章:

javascript - socket.io可以用来制作像whatsapp这样的聊天应用程序吗?

node.js - 如何使用mongoose、Node.js删除层次结构?

azure - 如何使用 Azure Key Vault 中的证书通过 Bastion 连接到 Azure 虚拟机?

node.js - 在 Node.js 和 Socket.io 聊天应用程序中解析表情符号

node.js - socket.io 远程客户端不工作

javascript - 从 SSL iframe 到父级的 onclick 链接?

node.js - 我可以将 JQuery mobile 与 Nodejs 一起使用吗

javascript阶乘函数得到RangeError

javascript - 以同步方式执行异步调用

ssl - Nodejitsu SSL证书