9

项目 GitHub 网址

我刚开始使用球童。我制作了一个简单的聊天应用程序,我正在使用球童服务。
WebSocket 由应用程序在 ws 而不是 wss 上提供服务,类似于应用程序在 HTTP 而不是 https 上提供应用程序的方式。我正在尝试使用 caddy 保护协议,并已成功地为 https 做到了这一点。由于在使用 https 时无法使用 ws,因此我还需要在 wss 上提供 WebSocket。我在文档中找不到一种方法,我可以在其中找到如何将代理 wss 反向为 ws,就像我对 https 到 http 所做的那样。

我试过的

your.tld.com {
    proxy / 0.0.0.0:8266 {
        transparent
        websocket
    }
}

2)

your.tld.com {
    proxy / 0.0.0.0:8266 {
        transparent
    }
   proxy /ws 0.0.0.0:8266 {
        transparent
    }
}

3)

your.tld.com {
    proxy / 0.0.0.0:8266 {
        transparent
    }
   proxy /ws 0.0.0.0:8266/ws {
        transparent
   }
}

上述尝试无效。希望能在这里得到解决方案。

4

2 回答 2

4

我有这样的东西是我的配置文件:

proxy /api/v1/streaming http://localhost:4000 {
    websocket
} 

所以对你来说,它会是这样的:

your.tld.com {
   proxy / 0.0.0.0:8266 {
        transparent
   }
   proxy /ws http://0.0.0.0:8266 {
        websocket
   }
}
于 2017-07-25T15:24:08.897 回答
-3

当我开始使用httpsorwss或时,我已经花了整整一个晚上来解决这个问题ssl。它总是connection stopped before establish显示400错误代码。

就在几分钟前,我找到了一个解决方案:

0. Cloudflare

在 SSL/TLS 选项卡上:

  • 如果您有自己的certorSSLHTTPS:将其设置为Full. (以下123步假设你有自己的https认证)

  • 如果您只有一个http server: 将其设置为Flexible. (Cloudflare 会自动添加https或添加ssl到您的网站。)

  • 之后,转到 DNS 选项卡,设置Proxied.

如果您不确定自己在做什么,只需转到 DNS 选项卡,设置DNS only

1. 确保您有正确的代理配置。

server {
    listen 80;
    server_name ai-tools-online.xyz;
    return 301 https://ai-tools-online.xyz$request_uri;
}

server {
    listen 443 ssl http2;

    ssl_certificate       /data/v2ray.crt;
    ssl_certificate_key   /data/v2ray.key;
    ssl_protocols         TLSv1.2 TLSv1.3;
    #ssl_ciphers           3DES:RSA+3DES:!MD5;
    server_name ai-tools-online.xyz;

    location / {
        proxy_pass http://127.0.0.1:5000;
    }

    location /socket.io {
        proxy_http_version 1.1;
        proxy_buffering off;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_pass http://127.0.0.1:5000/socket.io;
    }
}

ai-tools-online.xyz是您的域,http://127.0.0.1:5000是您的套接字服务器。

2.确保您的服务器Cross-Origin Controls设置'*'为允许Cross-Origin Access

对于flask-socketio, 是使用flask_socketio.SocketIO(app, cors_allowed_origins = '*')

3. 必须重启 nginx 才能让新配置生效

systemctl restart nginx

4. 更多设置方法caddy见以下链接:

https://github.com/yingshaoxo/Web-Math-Chat#reverse-proxy-configuration-for-https https://caddy.community/t/using-caddy-0-9-1-with-socket-io -and-flask-socket-io/508/6 https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/

于 2020-01-26T12:00:43.757 回答