Articles of WebSocket

nginx ws无效的URL前缀

第一次用nginx 。 我有一个在ws://service_name:3600侦听的nodejs WebSocket服务器。 我正在使用docker-compose : version: "2" services: # stuff service_name: image: imagename ports: – 3600:3600 links: # stuff – proxy proxy: image: image-from-nginx-with-custom-config ports: – 80:80 – 443:443 – 8443:8443 我的configuration: // stuff server { listen 8443; server_name localhost; ssl on; ssl_certificate /etc/nginx/certs/crt.pem; ssl_certificate_key /etc/nginx/certs/key.pem; keepalive_timeout 60; proxy_next_upstream error timeout invalid_header http_500 http_502 […]

nginx websocket upgstream模块开发

我试图让nginx反转代理websocket连接,以便我可以在同一个端口上托pipe一个rails应用程序。 考虑到我们忽略了8字节的内容长度握手问题,我有几个关于这个话题的问题: 如果我要为当前http上游实现1.1 keep-alive,是否允许我使用nginx作为后端node.js websocket服务器实例的反向代理? (和我不知道,如果我正确理解这一点)考虑到我实现上游keepalive,这将意味着客户端和nginx之间的每个连接也导致nginx和node.js后端之间的连接,只要客户端连接到websocket? 如果是这样的话,那么与nginx的连接处理方式有冲突吗? 如果1.持有,你可以给我任何提示,我将如何执行这个? 谢谢,Reza Ps有一个ngx-upstream-keepalive模块不支持http。 http://mdounin.ru/hg/ngx_http_upstream_keepalive/

HAProxy + Socket.IO + TornadIO在心跳上断开连接

所以,我在使用HAProxy在端口8888上负载平衡socket.io时遇到了问题。 我的设置是在端口80上监听的NGINX,以及在端口80上运行的Tornado Web服务器实例之间的负载均衡。然后,在同一负载均衡器上,我有一个HAProxy实例侦听端口8888,将请求转发到托pipeTornadIO的networking中的其他计算机服务器实例也在8888上运行。连接在大约前30秒左右工作,然后开始反复断开/重新连接。 重要的是要注意的是,它似乎在第一次心跳尝试中断了……心跳是HAProxy会遇到的与第一次连接尝试/首先几个消息交换相对的不同协议的心跳。 有趣的是,当tornadIO实例与负载均衡器运行在同一台计算机上时,即使使用HAProxy工作(但是连接端口8888并且可以在端口9000上指定tornadIO实例),也不会发生这种情况。 需要注意的是TornadIO不会在整个过程中抛出任何exception或输出任何不正常的结果,显示它不是我的服务器代码,而是代理层中的东西。 让我们也知道,我正在使用RabbitMQ同步所有TonadIO群集,不是我认为这很重要(和HAProxy不接触兔子) 这是我的HAProxy设置: global daemon maxconn 256 defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms listen http-in balance roundrobin option forwardfor # This sets X-Forwarded-For timeout queue 5000 timeout server 86400000 timeout connect 86400000 bind *:8888 server server1 18.181.3.164:8888 # ether1 在我的nginxconfiguration中,我插入了: location ~* \.(eot|ttf|woff)$ { […]

ElasticBeanstalk上的Websockets提供404

我试图部署一个websocket服务器到Elastic Beanstalk。 我有一个包含nginx和jar服务器的Docker容器,而nginx只是做转发。 nginx.conf是这样的: listen 80; location /ws/ { # <– this part only works locally proxy_pass http://127.0.0.1:8090/; # jar handles websockets on port 8090 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } location / { # <– this part works locally and on ElasticBeanstalk proxy_pass http://127.0.0.1:8080/; # jar handles http requests on port […]

NGINX:超过65535个连接限制

与HTTP不同,websocket在从HTTP升级后保持长时间连接。 即使操作系统调整为使用所有端口,总共只有65536个端口。 NGINX有可能超过这个限制吗? 一个潜在的解决scheme是SO_REUSEPORT ,但它缺less文档 – 至less除了下面这段,我没有find NGINX版本1.9.1引入了一个新特性,可以使用SO_REUSEPORT套接字选项,这个选项可以在很多操作系统的新版本中使用,包括DragonFly BSD和Linux(内核版本3.9以及更高版本)。 此套接字选项允许多个套接字侦听相同的IP地址和端口组合。 内核然后通过套接字负载平衡传入的连接。 所以,NGINX呼叫accept接受入站连接。 accept()系统调用与基于连接的套接字types(SOCK_STREAM,SOCK_SEQPACKET)一起使用。 它提取监听套接字的挂起连接队列上的第一个连接请求,sockfd,创build一个新的连接套接字,并返回一个引用该套接字的新文件描述符。 新创build的套接字不处于侦听状态。 原始套接字sockfd不受此调用的影响。 新的套接字是否会消耗端口? 如果是,如何超过65535个连接限制?

Websockets – 避免未知的连接

我有网站X运行一个websocket服务器(socket.io,全部基于node.js),并为客户提供实时数据。 现在,竞争对手Y开始连接到我们的websocket服务器,并直接从中窃取数据,并将其显示在他们的网站上。 我已经做了很多阻止他们的IP的尝试,但他们会在几分钟之内不断改变它。 (各种AWS /云托pipe提供商)。 我检查引用标题,用户代理,接受语言,几乎所有的东西都是可欺骗的,他们已经这样做了。 websocket连接通过nginx代理,如果有帮助的话。 你会怎么做?

Spring,SockJS – WebSocket握手期间出错:意外的响应代码400

我已经使用Spring Boot实现了BE应用程序和WebSockets支持。 我使用SockJS为了连接到我的WebSocket端点,并在连接过程中出现以下错误: error during WebSocket handshake: Unexpected response code: 400 但是(就像你在上面的图片中看到的那样)一切正常,websocket打开了。 现在我不明白什么是这个问题的原因,以及如何解决这个问题。 请帮忙。 更新 感谢paweln1986帮助我有固定版本问题与SockJS lib但意外的响应代码400的问题仍然存在: 我也在Tomcat 8之前使用nginx。这是我的nginxconfiguration: server { listen 443 ssl; server_name myserver.com; ssl on; location /api/ { proxy_pass_header X-XSRF-TOKEN; proxy_pass http://localhost:8081/api/; proxy_set_header Origin "http://localhost:8081/api/"; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; } location /dashboard/ { proxy_pass http://localhost:8081/dashboard/; […]

负载平衡networking套接字和长轮询

如果我的networking应用程序运行在三台支持Web套接字的客户机上,并且客户机连接到其中一台机器上,那么每个请求是否总会进入同一台机器,或者负载平衡器是否可以将其发送到不同的机器上? 基本上,一旦networking浏览器通过networking套接字build立连接,负载平衡器可以发送每个请求到不同的服务器吗? 如果是这样,哪个负载平衡器可以做到这一点? 另外,如果我使用类似检测浏览器兼容性的框架并select适当的协议,这将如何影响负载均衡机会?

Demeteorizer编译meteor应用程序,并导致WebSocket连接错误?

我有节点运行在nginx后面。 在本地testing服务器上,我的meteor应用程序工作正常(我正在使用默认的meteor安装)。 当这个应用程序被丢弃,并上传到服务器(我使用Nginx的+节点),错误发生的脚本的一部分。 应用程序很好,但数据广告被阻止。 有什么build议么? WebSocket连接到'ws://www.all* * .com / sockjs / 867 / rfk8snwm / websocket'失败:WebSocket握手期间出错:意外的响应代码:400 提前谢谢了。

Nginx WebSocket代理不断获得HTTP 301redirect

我一直试图让Nginx的WebSocket代理在过去的几天工作,但对我来说,我无法得到它的工作。 我遵循这里的官方指南,并使用Python的websockets模块作为服务器,并使用npm包作为客户端。 从wscat直接连接到Python WebSocket后端工作正常(从浏览器连接也是如此)。 但是,只要我在Nginx中进行分层,它就不能正常工作,并继续给我一个标准的HTTP 301redirect。 使用Nginx代理的cURLdebugging输出: $ curl 'http://test.ws:8080/websocket' \ > -H 'Pragma: no-cache' \ > -H 'Origin: http://localhost:8080' \ > -H 'Accept-Encoding: gzip, deflate, sdch' \ > -H 'Sec-WebSocket-Version: 13' \ > -H 'Sec-WebSocket-Key: V15bszpaQ+8Vq7mWR6NQbQ==' \ > -H 'User-Agent: Mozilla/5.0' \ > -H 'Upgrade: websocket' \ > -H 'Cache-Control: no-cache' \ > -H […]