文件时间与ERR_INVALID_HTTP_RESPONSE_20200902
起因
前端反馈说两套环境一套访问正常,一套访问无响应
登陆两台服务器检查发现
- 两台机器的iptables和selinux都是关闭状态
- 两台nginx的配置文件字节大小都是一致的,文件内容对比发现一致
- 访问地址所指向的html文件字节大小和文件内容比对发现一致
- nginx的日志文件输出正常,无报错,访问url也是200状态码
- 浏览器F12选项也无异常,只是请求连接无响应
浏览器显示
排查
- 两台机器都是我配置的,系统环境和软件环境都一致
Nginx的配置文件,机器A B的配置一样,机器A访问无响应,机器B访问正常1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28server {
# fe push static files at this folder
listen 9911;
server_name localhost;
gzip on;
#gzip_vary on;
gzip_proxied any;
gzip_disable "msie6";
gzip_min_length 1k;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
#gzip_static on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/bmp image/svg+xml image/jpeg image/x-icon;
#FTP上传文件下载访问
location / {
alias /opt/public/file/;
# autoindex on;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Credentials' 'true';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
}
}
}
情况一
发现如果注释掉机器A的nginx跨域配置,发现可以访问html 但是不能传递参数
1 |
|
问题解决
- 经过层层排查 发现URL访问路径的静态页面和JS文件的Modify和Change时间是1929年,应该是测试或者开发人员本地电脑调整过时间 将文件上传到服务器
1
2
3
4
5
6
7
8[root@VM_OUT_101 ~]# stat install.log
File: "install.log"
Size: 13231 Blocks: 32 IO Block: 4096 普通文件
Device: fd00h/64768d Inode: 392450 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2020-07-06 11:11:13.417000002 +0800
Modify: 1929-07-06 11:13:36.890999991 +0800
Change: 1929-07-06 11:13:39.479999991 +0800 - 解决问题时没有截图,上面是我手动更改的时间
- 而Linux系统最早支持时间是1970年,该文件的时间戳系统服务无法读取,导致无响应
- 在时间正常的服务器上手动更改下文件,让文件的时间戳成为正常时间即可
文件时间与ERR_INVALID_HTTP_RESPONSE_20200902
https://imwang77.github.io/2020/09/02/QA_文件时间与ERR_INVALID_HTTP_RESPONSE/