我刚开始使用球童。我做了一个简单的聊天应用程序,我正在使用球童服务 WebSockets由应用程序在ws而不是wss上提供,类似于应用程序在HTTP上而不是https上提供应用程序的方式。 我正在尝试使用caddy保护协议,并已成功完成https的协议。由于我在使用https时无法使用ws,因此我还需要在wss上提供WebSockets。 我在文档中找不到一种方法,我可以找到如何将代理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
}
}
上述attemots不起作用。希望能在这里找到解决方案。
答案 0 :(得分:2)
我有类似这样的配置文件:
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
}
}
答案 1 :(得分:1)
当我开始使用https
或wss
或ssl
时,我已经花了一整夜来解决这个问题。它总是说connection stopped before establish
带有错误代码400
。
就在几分钟前,我找到了解决方案:
在“ SSL / TLS”标签上:
如果您有自己的cert
或SSL
或HTTPS
:请将其设置为Full
。 (以下123个步骤假定您拥有自己的https认证)
如果只有http server
,请将其设置为Flexible
。 (Cloudflare会自动将https
或ssl
添加到您的网站。)
然后,转到“ DNS”选项卡,设置Proxied
。
如果不确定自己在做什么,只需转到DNS选项卡,设置
DNS only
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
是您的套接字服务器。
Cross-Origin Controls
设置为'*'
以允许Cross-Origin Access
对于flask-socketio
,要使用flask_socketio.SocketIO(app, cors_allowed_origins = '*')
systemctl restart nginx
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/