使用SSE开发环境没问题,部署到生产环境浏览器控制台报错NetworkError或者Failed to load resource: net::ERR_INCOMPLETE_CHUNKED_ENCOD

背景

开发环境使用SSE后端发送消息到前端 测试使用后没什么问题,调用接口可以迅速的接收到消息。部署到生产环境可以创建SSE连接但是监听open和message控制台就开始报标题的错误。根据错误查询原因没有头绪。

问题原因

开发环境和生产环境都使用的是vue2,但是生产环境使用了nginx进行了代理,只是问题的根本所在,因为nginx的配置文件中没有配置SSE连接,所以导致无法将消息发送给前端。

解决问题

首先生产环境是用docker部署的nginx,需要修改docker镜像中nginx的配置文件,修改本地nginx的配置文件是无效的。

nginx.conf添加SSE配置:

        可以单独弄一个访问SSE的配置

location /prod-api/sse/ {
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            # SSE 连接时的超时时间
            proxy_read_timeout 180s;
            
            # 取消缓冲
            proxy_buffering off;

            # 关闭代理缓存
            proxy_cache off;

                #代理的端口和路径
            proxy_pass http://localhost:8082/sse/;
        }

修改docker中nginx.conf的两种方法:

        1.删除原来nginx的容器然后再次映射配置文件、日志等文件重新运行一个容器,我的运行命令:/home/scada/docker文件路径和nginx版本号自行修改

docker run -d \
--net host \
--name nginx \
--restart=always \
-v  /home/scada/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /home/scada/docker/nginx/logs:/var/log/nginx \
-v  /home/scada/wcms_home/html:/usr/share/nginx/html \
-v /home/scada/docker/nginx/cert:/etc/nginx/cert \
nginx:1.23.4

        2.进去nginx容器中对nginx.conf进行编辑修改

# 进入容器内部

docker exec -it nginx /bin/bash

#首先需要在容器内下载vim 

#更新软件包

apt-get update

#下载vim

apt-get install vim

# 直接修改配置

vim /etc/nginx/nginx.conf

配置修改好了之后,将容器停了再启动

docker stop nginx

docker  start nginx

如果启动nginx容器中途有问题先查看nginx的日志是不是有报错,可能是配置问题配置错问题,也可能是端口被占用,查看日志寻找对应的原因。

总结

根据以上的步骤下来,再次查看SSE连接浏览器也不会报错了。如果有问题评论区评论或者私聊

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值