项目在上传文件时,后端请求没有返回结果,但是在谷歌浏览器控制台会报错net::ERR_CONNECTION_RESET
在火狐浏览器测试,控制台并不会报错
本地调试上传,报错文件/node_modules/rc-upload/es/request.js:90
ant design pro上传组件upload 所使用”rc-upload”组件在npm是有单独的包,upload对其进一步封装
网上搜索net :: ERR_CONNECTION_RESET,很多人说这个问题是因为nginx配置“Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)”,需要修client_max_body_size的配置。
但是现在client_max_body_size的配置是10240m(10g),一般上传的文件是1g左右
dockerfile文件
dockerfile是一组严格按顺序运行的有限的命令集的简单序列。它们影响了最终镜像的文件合元数据。这里的RUN命令通过签出并安装应用程序影响了文件系统,而EXPOSE、CMD和WORKDIR命令影响了镜像的元数据
FROM node # 定义基础镜像
MAINTAINTER [email protected] # 声明维护人员,不是创建docker镜像所必须的
RUN git clone -q https://github.com/docker-in-practice/todo.git
WORKDIR todo # 移动到使用WORKDIR命令的目录总,不仅会改变构建环境中的目录,最后一条WORKDIR命令还决定了从所构建镜像启动容器时用户所处的默认目录
RUN npm install > /dev/null
EXPOSE 8000 # 指定从所构建的镜像启动的容器需要监听这个端口
CMD ["npm","start"] # 指定启动时需要运行的命令
项目中用到的dockerfile
FROM nginx:1.14.0-alpine
COPY dist /home/server/ # 复制根目录的dist文件到/home/server
COPY fitcont_frontend.template /home/server/fitcont_frontend.template # 复制根目录的 fitcont_frontend.template到 /home/server/fitcont_frontend.template
RUN rm /etc/nginx/conf.d/* # 执行命令,删除默认的nginx.conf配置文件
WORKDIR /home/server # 移动到/home/server文件
EXPOSE 80 # 暴露80端口
CMD ["sh", "-c", "envsubst '$IP' /etc/nginx/nginx.conf && nginx -g 'daemon off;'"]
# sh -c envsubst ip ....执行替换环境变量的命令
# 启动nginx
-envsubst的使用场景:
通常我们需要获取某一个或者几个环境去替换系统中的某些变量,这种情况下我们只需使用sed去简单的替换掉即可,在这种场景中,sed就可以满足我们的需求,但是如果我们需要修改的变量较多,而且不确定到底有哪些变量时,envsubst就排上了用场
-使用方法:
envsubst < original_file > destination_file
-应用举例
假设我们需要将某个环境变量添加到脚本中,则我们只需要制作一个模板文件,然后只需要执行一行命令即可实现替换
查看当前容器
kubectl get pod -n kube-system |grep web
进入容器
kubectl exec -it web-front-6547b7c4b9-d24fr -n kube-system /bin/sh
查看nginx.conf配置文件
cd .. #进入容器默认在home/server页面,到上一级/home
cd .. #再到上一级/
cd etc/nginx # nginx.conf配置文件目录 etc/nginx/nginx.conf
cat -n nginx.conf #查看nginx配置文件 -n 可以看见行数
sed 命令
# 没有-i 命令,置灰显示编辑后显示文件,添加-i操作才会生效
# 可以先不加-i,看一下修改是否正确,确认修改无误后,添加-i使修改生效
# 25行插入一句
sed '25i\ client_body_buffer_size 100m;' nginx.conf
sed -i '25i\ client_body_buffer_size 100m;' nginx.conf
#删除第25行
sed '25d' nginx.conf
sed -i '25d' nginx.conf
#将 "client_max_body_size 300m" 字符串替换为 "client_body_buffer_size 100m"
sed 's/client_max_body_size 300m/client_body_buffer_size 100m/g' nginx.conf
sed -i 's/client_max_body_size 300m/client_body_buffer_size 100m/g' nginx.conf
#重启让配置文件生效
nginx -s reload
限制用户上传文件的大小 client_max_body_size 300m;
客户端缓存文件的大小 client_body_buffer_size 128k;
客户端请求内容超时时间,1分钟 client_body_timeout 600;
客户端请求header头信息的超时时间,1分钟 client_header_timeout 600;
查看日志发现在上传文件时,有报错 out of memory,考虑可能是当前环境磁盘空间小,因为同样的项目在其他环境可以正常运行