我们有两个客户端,一个是javascript,另一个是C ++。 C ++使用的是libwebsockets。他们都尝试通过安装websockets(wss)连接到我们的websocket服务器,通过端口7000,它位于NGINX服务器后面。当javascript客户端连接时,连接成功,在NGINX 7000端口日志中,显示:
[04/May/2018:12:25:30 +0000] "GET / HTTP/1.1" 101 0 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/ Safari/537.36"
但是,在尝试连接C ++客户端时,连接失败并显示日志
[04/May/2018:10:59:40 +0000] "GET / HTTP/1.1" 400 5 "-" "-"
为什么在第二种情况下它会抛出400而不是101?我们不确定如何调试它。这就是我们在websocket客户端中使用的内容
ws->init("wss://echo.websocket.org:7000", nullptr, "your CA root file path");
客户刚刚说Connection Failed
。我们尝试使用wireshark检查数据并在NGINX服务器中启用更多日志,但我们无法弄明白。它能是什么?可能是因为错过匹配的SSL / TLS版本?
答案 0 :(得分:0)
事实证明,客户端的库实际上并未包含请求中的端口号,即使它包含在连接URL中也是如此。因此,要么配置NGINX来处理这种特定情况,要么让库包含请求中的端口,就可以解决探测问题。