ssl - NGINX:两个不同的 websocket 连接的不同日志

标签 ssl nginx websocket tls1.2

我们有两个客户端,一个是javascript,一个是C++。 C++ 使用 libwebsockets。他们都尝试通过安全的 websockets (wss) 通过端口 7000 连接到我们的 websocket 服务器,它位于 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,如 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, "你的CA根文件路径");

客户端只是说连接失败。我们尝试使用 wireshark 检查数据并在 NGINX 服务器中启用更多日志,但我们无法弄清楚。它是关于什么的?会不会是因为 SSL/TLS 版本不匹配?

最佳答案

原来客户端的库实际上并没有在请求中包含端口号,即使它包含在连接 URL 中也是如此。因此,要么配置 NGINX 来处理这种特定情况,要么让库在请求中包含端口,就可以解决这个问题。

关于ssl - NGINX:两个不同的 websocket 连接的不同日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50175132/

相关文章:

node.js - WebSocket 关闭代码 1002

javascript - Chrome 和 Safari 使用 socket.io 恢复为 xhr-polling 而不是 websockets

java - (Tomcat) Java WAR 通过 SSL 连接到 MySQL

php - Nginx + Php-Fpm = 404

ssl - DH 与 DHE 和 ECDHE 以及完全前向保密

python - 使用Django服务 protected 媒体文件

ssl - NGINX SSL 超时

javascript - Websockets - 是否需要额外的框架?

java - Java 更新导致 SSL 握手失败

regex - 如何验证 SSL 证书