使用Caddy的Web套接字反向代理(WSS)

时间:2017-07-24 05:05:08

标签: web-services websocket caddy caddyfile

Project GitHub URL

我刚开始使用球童。我做了一个简单的聊天应用程序,我正在使用球童服务 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不起作用。希望能在这里找到解决方案。

2 个答案:

答案 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)

当我开始使用httpswssssl时,我已经花了一整夜来解决这个问题。它总是说connection stopped before establish带有错误代码400

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

0。 Cloudflare

在“ SSL / TLS”标签上:

  • 如果您有自己的certSSLHTTPS:请将其设置为Full。 (以下123个步骤假定您拥有自己的https认证)

  • 如果只有http server,请将其设置为Flexible。 (Cloudflare会自动将httpsssl添加到您的网站。)

  • 然后,转到“ 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/