nginx实现对websocket加密协议wss协议的反向代理以及websocket整合springboot入门(踩坑)

出发点

最近公司需要有一个推送前端消息的需求
首选websocket进行推送,也做过客服系统接触过,最近看了一点websocket的相关内容记录总结一下。

什么是websocket

websocket简单来说就是一个服务端可以向客户端发送请求的一个协议,因为现在企业级开发大部分还是由客户端向服务器发送请求索要请求数据,但是在聊天,消息推送等场景下,需要服务器向web前端或者IOS,Android,小程序推送一些消息,就需要借助websocket工具了

整合springboot

由于博主是需要服务端向web前端发送消息,故需首先整合websocket到后端项目。 Java项目,springboot框架下,首先整合websocket导入自动配置类。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
        </dependency>

然后交给spring容器处理

@Configuration
public class WebSocketConfig {
   
   
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
   
   
        return new ServerEndpointExporter();
    }
}

springboot的拦截器无法对ws请求进行拦截。

进行nginx反向代理转发wss请求

公司项目走的是HTTPS协议,故前端转发的是https请求到nginx代理服务器,ws协议只能直接访问后端websocket接口调用,但是不能满足前端建立websocket请求,故需要使用wss协议进行调用,wss默认端口与https一致为443端口,故可以与https使用同一套加密证书以及端口,这对后面整合wss协议提供了便利。

具体nginx配置

下面就是通过nginx反向代理websocket请求的nginx配置,不做过多赘述 ,具体参考以下两篇文章
wss协议配置解析
wss协议nginx配置

server {
   
   
    listen 443 ssl; 
    #监听前端转发的接口
    server_name 0.0.0.0;
    #配置nginx的server_name时,_; 或 0.0.0.0为无效匹配,所有未匹配的域名默认解析到 http的第一个server网站,这点务必注意!
    
    #并且listen配置配置后此配置失效,也就是只通过端口进行请求匹配。
    ssl_certificate /etc/nginx/secret/xxx.crt;#ssl证书
    ssl_certificate_key  /etc/nginx/secret/xxx.pem;#ssl私钥
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;
    charset utf-8;

location = / {
   
   
	root    /usr/share/nginx/html;
	index index.html;
}
location ~ /.*\.(gif|jpg|ico|png|js|css|woff|otf|ttf|TTF|svg|json|xlsx|html|htm|mp4|zip|pdf)$ {
   
   
	root   /usr/share/nginx/html;
	index index.html;
}
#原来的代理地址
location / {
   
   
	proxy_pass http://172.xx.xx.xx:8099/;
}
#!!!!!这里为websocket的代理
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值