node.js - 使用代理 apache 运行套接字 io 服务器
问题描述
套接字 io 服务器 socket.my-domain.com
const app = require("express")();
const axios = require("axios");
const fs = require("fs")
const https = require("https")
const https_server = https.createServer({
key: fs.readFileSync('/home/socket/socket/server.key'),
cert: fs.readFileSync('/home/socket/socket/server.cert')
},app);
const options = {
cors : {
origin : "https://app.my-domain.com",
methods: ["GET", "POST"],
allowedHeaders: ["custom-header"],
credentials: true ,
transports: ['websocket', 'polling'],
},
allowEIO3: true
};
const io = require("socket.io")(https_server, options);
https_server.listen(8001);
我的第一个问题是我应该正确创建 https 服务器还是 http ?
所以我在端口 8001 上创建了套接字 io 服务器接下来我想我应该编辑 apache
/etc/apache2/conf.d/userdata/ssl/2_4/socket/socket.my-domain.com/socket.conf
ProxyPass / http://localhost:8001/
RewriteEngine on
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteCond %{HTTP:Connection} upgrade [NC]
RewriteRule ^/?(.*) "ws://localhost:8001/$1" [P,L]
ProxyTimeout 3
我从另一个堆栈溢出问题复制它的工作。
客户
const socket = io("socket.my-domain.com:8001",{
secure: true ,
withCredentials: true,
extraHeaders: {
"custom-header": "true"
},
transports: ['websocket', 'polling'],
allowEIO3: true
}) ;
尝试连接到套接字服务器时,来自 app.my-domain.com 上的客户端 kaspersky alert ssl self certificate error from mobile socket client throws timeout error
app.my-domain.com 有 cloudflare 证书
我做错了什么?
解决方案
推荐阅读
- sql - 分层数据副本
- jquery - 实现:错误类型错误:$(...).datepicker 不是函数
- jenkins - 在 Jenkins Slave 中运行 Kaniko
- c# - Automapper Construct使用变化的值
- r - R:矩阵乘法错误 - 与 GLM 相关
- excel - 使用另一列中的条目搜索列?
- java - 添加 keyListener 来模拟鼠标点击链接,页面是用 Javax jspx servlet 制作的。getElementById 返回 null
- linux - 如何将处理器编号转换为 32 位十六进制值
- javascript - 如何禁用在textarea中添加电话号码?
- python - 查询集查找中的日期格式