springclould nginx转发 websocket400报错问题

 

之前一直找原因一直围绕着nginx转发的问题

说头信息没设置全

然后nginx配置文件上加了这些

#http块加以下几行:
map $http_upgrade $connection_upgrade {

        default upgrade;

        '' close;

    }
复制代码
#sever块加以下几行:

location / {
                proxy_pass http://localhost:8001;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
        }
复制代码

配置完发现还是没有效果,

最后发现自己项目用的是微服务spingCloud

还得在ZUUL网关配置一个websocket过滤器

复制代码
package com.power.bos.filter;

import com.netflix.zuul.ZuulFilter;
import com.netflix.zuul.context.RequestContext;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;

@Component
public class WebSocketFilter extends ZuulFilter {
    @Override
    public String filterType() {
        return "pre";
    }

    @Override
    public int filterOrder() {
        return 4;
    }

    @Override
    public boolean shouldFilter() {
        return true;
    }

    @Override
    public Object run() {
        RequestContext context = RequestContext.getCurrentContext();
        HttpServletRequest request = context.getRequest();
        String upgradeHeader = request.getHeader("Upgrade");
        context.getResponse().setHeader("X-Frame-Options", "SAMEORIGIN");
        if (null == upgradeHeader) {
            upgradeHeader = request.getHeader("upgrade");
        }
        if (null != upgradeHeader && "websocket".equalsIgnoreCase(upgradeHeader)) {
            context.addZuulRequestHeader("connection", "Upgrade");
//            context.addZuulRequestHeader("X-Frame-Options", "SAMEORIGIN");
        }
        return null;
    }
}
复制代码

就解决了上图的两个问题了

红色那块是针对第二个报错的

最后解决

 

2018.7.9

  后来发现这种方式还是不好,连接有延迟,要等个几秒才连接成功,这样严重影响用户体验,后来还是弃用了

posted @   小奔的早晨  阅读(613)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示