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

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

  • 1.Nignx SSL证书,并设置强制跳转Https访问(略)
  • 2.在前端将ws协议请求更改为wss协议请求
【Jetty|Jetty websocket使用nginx 解决wss连接失败问题】wss://域名或者IP,根据实际情况填写/websocket/jetty启动时,websocket所在的webapplication内部对应的servlet

Jetty|Jetty websocket使用nginx 解决wss连接失败问题
文章图片
部分代码
??如上图所示,在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";
}

    推荐阅读