问题
在开发环境,进行文件上传校验的接口时,发现一到60s就504超时了
响应体是404的内容信息
有可能造成的原因
1. 前端 ajax 请求进行了设置
由于只有开发环境有504错误,线上是可以的,都是一套代码,所以排除是代码层原因
2.Nginx 没有配置超时时间
从其他环境copy了一份,最大超时的限制。然后systemctl restart nginx 进行了重启,发现没起作用
location /api/backend/ {
proxy_pass http://**.**.**.**:**/v2/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $http_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
client_max_body_size 1024M;
# nginx跟后端服务器连接超时时间
proxy_connect_timeout 300s;
# 后端服务器数据回传超时时间
proxy_send_timeout 300s;
# 连接成功后,后端服务器响应超时时间
proxy_read_timeout 300s;
}
网上还有说是client_body_timeout 或者 设置最大缓存的,但感觉不是那个问题;
所以先看下是不是生效的不是这个配置文件。
先使用nginx -t查看一下:
发现果然不是我改的文件。但是当我查看了/usr/local/nginx/conf/nginx.conf 这个文件内容后,肯定了生效的也不会是这个文件,里面内容很少。
所以,上面命令获取到的不准!!!
再使用systemctl status nginx 查看一下
这个还是比较可信的,是修改的配置文件。
那为啥不好使,难道是其他后端的设置?咨询了相关后端同学,发现并没有。。。
并且后端同学使用postman,通过微前端以前的一个老域名调用,发现是没有时间限制的。就是说只有新域名不行。
公司各个环境的请求,都是先通过运维进行域名解析,然后再分发到各个机器的。
- 就是说域名访问,第一层先通过运维那边的 n 机,他那边配置域名转发到我们这的 n 机监听的端口上;
- 既然其他域名可以通,大概就是中间某一层限制了,所以先从域名转发第一层查
3.运维转发层 nginx 设置
问了运维同学,果然是他那边设置了60s 限制,改成5分钟,就可以了。
大功告成!!顺带粘一下,有个博主解答的
