起因

前端反馈说两套环境一套访问正常,一套访问无响应
登陆两台服务器检查发现

  • 两台机器的iptables和selinux都是关闭状态
  • 两台nginx的配置文件字节大小都是一致的,文件内容对比发现一致
  • 访问地址所指向的html文件字节大小和文件内容比对发现一致
  • nginx的日志文件输出正常,无报错,访问url也是200状态码
  • 浏览器F12选项也无异常,只是请求连接无响应

浏览器显示

排查

  • 两台机器都是我配置的,系统环境和软件环境都一致
    Nginx的配置文件,机器A B的配置一样,机器A访问无响应,机器B访问正常
server {
    # 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 但是不能传递参数

server {
    # 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';
    }
  }
}

问题解决
  • 经过层层排查 发现URL访问路径的静态页面和JS文件的Modify和Change时间是1929年,应该是测试或者开发人员本地电脑调整过时间 将文件上传到服务器
[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年,该文件的时间戳系统服务无法读取,导致无响应
  • 在时间正常的服务器上手动更改下文件,让文件的时间戳成为正常时间即可
Logo

更多推荐