首页 > 解决方案 > 使用代理 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 证书

我做错了什么?

标签: node.jsapachesocket.iossl-certificatedevops

解决方案


推荐阅读