zoukankan      html  css  js  c++  java
  • 404 Not Found 探秘Nginx转发处理流程

    一、问题描述

    访问一个链接地址后报404 Not Found nginx/1.10.2

    1
    112.95.211.154 - - [08/Mar/2018:15:22:21 +0800] "GET /phihome/qr/?m=phicomm&c=echo&p=r1&s=BZHCA HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"

    二、探秘问题

    1.我们需要先找到nginx的配置文件

    查80端口对应的进程

    1
    2
    netstat -lntp|grep 80  
    tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN 18107/nginx

    2.拿进程号18107查对应进程信息

    1
    2
    3
    ps -ef|grep 18107
    ps -ef|grep nginx
    root 18152 1 0 2017 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

    3.每一次请求都会记录到一个叫做access.log的文件中,寻找它在哪里

    • 进入到nginx的配置文件或者在目录中grep access.log *
    • 发现在http 标签下面的 access_log /var/log/nginx/access.log main;

    4. tail -f /var/log/nginx/access.log 观察自己的请求信息

    1
    112.95.211.154 - - [08/Mar/2018:15:22:21 +0800] "GET /phihome/qr/?m=phicomm&c=echo&p=r1&s=BZHCA HTTP/1.1" 404 571 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"

    发现请求返回的是404

    5. 寻找请求进来之后是如何进行转发的

    5.1 先定位location 按照请求中的phihome作为条件进行查找 当然也有可能配置成phihome/qr 找到了如下信息

    location /phihome/qr {
           proxy_pass http://proxy_phihome_app_download;
           proxy_set_header Host    $host;
           proxy_set_header X-Real-IP $remote_addr;
           proxy_redirect http:// $scheme://;
           proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    5.2 根据proxy_pass可知它并没有将请求立即交给项目应用而是转了一下,我们看一下转到哪里去了,发现他将请求转到了71.20机器上的5007端口

    upstream proxy_phihome_app_download{
              server 192.168.71.20:5007;
    }
    

    6. 登录71.20端口进行继续进行探究

    6.1 登录上去之后发现是web02test 找5007端口

    1
    2
    3
    4
    [root@web02test ~]# netstat -lntp|grep 5007
    tcp 0 0 0.0.0.0:5007 0.0.0.0:* LISTEN 1995/nginx
    [root@web02test ~]# ps -ef|grep 1995
    root 1995 1 0 2017 ? 00:00:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf

    6.2 发现居然又是ng进行 what fuck!

    重复上述步骤 找到access.log位置进行观察

    1
    192.168.71.15 - - [08/Mar/2018:16:12:58 +0800] "GET /phihome/qr/?m=phicomm&c=echo&p=r1&s=BZHCA HTTP/1.0" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "112.95.211.154"

    6.3 进入到nginx.conf找转发 没有找到但是发现

    • include /etc/nginx/conf.d/*.conf;
    • 进入到conf.d目录搜索grep phihome * 找到了nginx_phihome_app_download.conf文件
    • 打开看看 哇哦,豁然开朗,它将请求交给了项目应用处理了
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    server {
    listen 5007;
    server_name localhost;

    location / {
    root /data/deploy/static/com.phicomm.smarthome.phihome/phihome-download-web/HEAD/;
    }

    location = /50x.html {
    root /data/thinkphp/Public;
    }

    }

    6.4 让我们看看为啥没有找到上面那个路径

    1
    2
    [root@web02test conf.d]# cd /data/deploy/static/com.phicomm.smarthome.phihome/phihome-download-web/HEAD
    -bash: cd: /data/deploy/static/com.phicomm.smarthome.phihome/phihome-download-web/HEAD: No such file or directory

    没有找到!进入到父级目录看看

    1
    2
    3
    4
    5
    [root@web02test ~]# cd /data/deploy/static/com.phicomm.smarthome.phihome/phihome-download-web
    [root@web02test phihome-download-web]# ll
    total 8
    lrwxrwxrwx 1 root root 77 Mar 8 15:43 HAED -> /root/deploy/static/com.phicomm.smarthome.phihome/phihome-download-web/www/12
    drwxr-xr-x 12 root root 4096 Mar 7 19:53 www

    三、解决问题

    原来软连接HEAD被我误写成HAED了,真想抽自己两个大嘴巴子!

    改过来后在进行请求,成功!

    1
    112.95.211.154 - - [08/Mar/2018:16:03:35 +0800] "GET /phihome/qr/static/images/echo.png HTTP/1.1" 200 625298 "https://sitresourcehome.phicomm.com/phihome/qr/static/css/index.css?version=1.0" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36" "-"

    nginx

  • 相关阅读:
    692. Top K Frequent Words
    659. Split Array into Consecutive Subsequences
    hdu5015矩阵快速幂
    codefroces 450B矩阵快速幂
    ural Ambitious Experiment 树状数组
    poj3254 状态压缩dp
    poj2686 状压dp入门
    hdu4763 kmp
    hdu4847 kmp
    hdu3294 manacher
  • 原文地址:https://www.cnblogs.com/lingyejun/p/8537293.html
Copyright © 2011-2022 走看看