我有一个cloudflare背后的网站。我需要在不关闭cloudflare支持的情况下通过SSL启用websocket。我有一个PRO计划,因此不会得到新的websocket支持。我使用Nginx将SSL连接代理到节点服务器上运行的web套接字。现在,我在某个地方读到cloudflare可以使用批准的端口来支持websocket。因此,我使用8443作为Nginx端口,使用另一个端口作为节点服务器。使用wscat会返回一个200的错误。
$ wscat -c wss://xyz.com:8443
error: Error: unexpected server response (200)
我知道websocket正在等待一个101代码。但是,如果我访问https://xyz.com:8443,我可以看到节点服务器显示的页面,告诉我代理正在工作。此外,一旦我关闭cloudflare支持,websocket就会开始工作。任何线索都可以让它发挥作用。我知道我可以创建一个子域,但我更喜欢在cloudflare后面运行websocket。
如果你试图通过CloudFlare的网络访问它,你需要在你的域上明确启用web套接字,然后它们才能工作——无论端口是什么。与中一样,即使端口可以通过我们的网络,这也不会自动意味着在你的域名上启用或访问web套接字。
您可以尝试联系我们的支持团队请求异常,看看他们是否可以为您的域启用它,但通常情况下,这仍然只在业务和企业级别可用。
免责声明:我在CloudFlare工作。