nginx swoole websocket 配置

功能需求

公司使用swoole做消息通知服务 
由于任务服务代码和应用代码放在不同的服务器中,任务服务器要求不能对外开放外网
所以要在应用服务器上对websocket的反响代理

大概的流程是这样的

客户端 (应用)nginx 任务服务器 new WebSocket(url) 建立连接 创建的是wss://域名 (https协议连接) http://IP:port 这里需要在nginx配置websocket 转发 任务服务器在把消息返回给应用服务器 消息推送到客户端 客户端 (应用)nginx 任务服务器

nginx 配置内容

		map $http_upgrade $connection_upgrade {
				default Upgrade;
				''      close;
		}
		location /websocket/ {
				proxy_buffers   32 32k;
				proxy_buffer_size 128k;
				proxy_set_header X-Real-IP $remote_addr;
				proxy_set_header Host $host;
				proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
				proxy_http_version 1.1;
				proxy_set_header Upgrade $http_upgrade;
				proxy_set_header Connection "Upgrade";
				proxy_pass http://ip(任务服务器IP):port;
		}

这里 要说明几点注意事项

  1. failed: Error during WebSocket handshake: Unexpected response code: 301
    这个错误主要是因为 nginx 配置项中没有区分大消息 Upgrade
  2. but attempted to connect to the insecure WebSocket endpoint ‘******’. This request has been blocked; this endpoint must be available over WSS.
    大概意思是使用的是https安全连接 不能使用ws这种不安全的东西 要使用wss
    然后修改连接方式为wss
  3. failed: Error in connection establishment: net::ERR_CERT_COMMON_NAME_INVALID
    这种错误要查看建立服务时域名地址写的是否正确 正常情况使用域名的形式

特别提醒

建立的服务一定是 SWOOLE_SOCK_TCP 不能是 Swoole_ssl;
客户端请求要是wss 协议进行连接

推荐

https://www.thinbug.com/q/31923626

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Spicy姜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值