nginx代理websocket,出现websocket 1006 (abnormal closure)错误

情况:部署到服务器上的websocket程序,未加心跳,发现隔一阵子就会断开,出现1006 (abnormal closure)错误。


原因:代理参数的proxy_read_timeout默认是60s,只要超过这段时间没有通信,就会自动断开tcp连接


解决办法:

  1. 修改参数proxy_read_timeout,比如在代理设置添加 proxy_read_timeout 300s;
  2. 添加心跳,心跳的间隔要小于默认的读超时proxy_read_timeout 60s,这样程序就会可以在60s的时间窗口内读到数据,不会被nginx断开连接。
nginx可以通过配置实现代理websocket的功能。首先,需要在nginx的配置文件中定义一个upstream块,指定websocket服务器的地址和端口。比如,可以使用以下配置来定义一个名为websocket的upstream块,将请求转发到192.168.100.10的8010端口: ``` upstream websocket { server 192.168.100.10:8010; } ``` 接下来,在nginx的http块中,在合适的位置添加一个location块,用于处理websocket请求。在这个location块中,需要设置一些超时的参数,确保连接不会因为超时而断开。同时,还需要设置一些代理相关的头部信息,以便正确处理websocket请求。以下是一个示例配置: ``` http { server { location / { proxy_pass http://websocket; proxy_http_version 1.1; proxy_connect_timeout 5s; proxy_read_timeout 60s; proxy_send_timeout 30s; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "$connection_upgrade"; } } } ``` 这样,当有websocket请求到达nginx时,nginx会将请求转发给指定的websocket服务器,并将响应返回给客户端。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Nginx代理WebSocket方法](https://blog.csdn.net/wanger5354/article/details/123675030)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [NGINX作为WebSocket代理](https://blog.csdn.net/xiaoyu19910321/article/details/78244148)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值