Jetty websocket使用nginx 解决wss连接失败问题

  在使用jetty的websocket中遇到了一些问题,因为使用的是微信打开的页面,所以必须使用https和wss协议打开连接,websocket使用wss时连不上服务端的websocket,查阅了一些资料后使用了nginx去反向代理这个请求,解决了这个问题。

需要设置以下几个步骤:

  • 1.Nignx SSL证书,并设置强制跳转Https访问(略)

  • 2.在前端将ws协议请求更改为wss协议请求

wss://域名或者IP,根据实际情况填写/websocket/jetty启动时,websocket所在的webapplication内部对应的servlet

部分代码

  如上图所示,在webSocket中创建好了之后,在ContextHandler(上下文句柄对象)添加该句柄对应的Path,如果不需要使用ssl加密访问,则使用ws访问即可,访问ws://你的域名:jetty设置的监听端口/event/

  • 3.在nginx中设置websocket代理

设置upstream

upstream wss_svr{
服务端ip:jetty启动时,websocket监听的端口;
}

配置代理模块

location /websocket/{
proxy_pass http://wss_svr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forward-For $remote_addr;
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";
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容