一、问题描述

访问一个链接地址后报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" "-"

404 Not Found 探秘Nginx转发处理流程的更多相关文章

  1. nginx转发会 默认忽略 headers 中name带”_”的

    昨天遇到一个很蛋疼的问题,在提供的一个 http api中,有定义了一个"X_AUTH_TOKEN"自定义head,可是请求这个api时带上"X_AUTH_TOKEN&q ...

  2. nginx转发post消息成301了

    刚才开始是:第一次遇到这个问题是因为不支持sslv3 后来测试的时候,是因为没注意https的导致http 301跳转https post请求nginx转发成301了,到时post数据丢失

  3. Apache/nginx转发设置-分布式部署

    Apache转发设置1. Weblogic安装 Weblogic8和Weblogic10默认安装,选择完全安装即可,如果是Weblogic9则选择自定义安装,勾选WebService plugin 2 ...

  4. windows server 2008使用nginx转发API异常解决办法

    公司比较传统,一直使用的JSP做项目,没有遇到过跨域问题. 最近因为公司接到一个微信spa项目,因为考虑到项目需要调用老接口,斗胆选择nginx(1.12.1)做接口转发服务, 开发环境使用的win1 ...

  5. nginx系列5:nginx的请求处理流程

    nginx的请求处理流程 如下图: nginx可以处理来自web(http),Email,TCP/UDP的三类请求. nginx底层使用非阻塞的事件驱动引擎,结合状态机来完成异步通知,其中处理Http ...

  6. 一次悲催的nginx转发白屏经历

    背景 公司还有一个学习平台,由于公网地址问题,所以想用nginx转发一下,首先后端地址访问时没有问题的,一切正常. 用nginx转发后,访问nginx代理地址悲催了,出现了白屏. 排查过程 首先贴出来 ...

  7. 部署Asp.net core & Nginx,通过nginx转发

    部署Asp.net core & Nginx,通过nginx转发 CentOS 7 x64 1.vs2017 建立Asp.net core项目,并发布到目录 2.通过FTP工具,将程序copy ...

  8. nginx转发成功报400 bad request,服务端未收到请求

    nginx转发成功报400 bad request,服务端未收到请求 解决办法: upstream后面不要跟下划线 例如: upstream auth_service{ server 30.4.164 ...

  9. elk-Kibana设置登录认证-通过nginx转发(六)

    一.kibana的登录认证问题 kibana是nodejs开发的,本身并没有任何安全限制,直接浏览url就能访问,如果公网环境非常不安全,可以通过nginx请求转发增加认证,方法如下: tips:ki ...

随机推荐

  1. UIViewController三种不同的初始化view的方式

    You can specify the views for a view controller using a Storyboard created in Interface Builder. A s ...

  2. 第十三篇:带缓冲的IO( 标准IO库 )

    前言 在之前,学习了 read write 这样的不带缓冲IO函数. 而本文将讲解标准IO库中,带缓冲的IO函数. 为什么要有带缓冲IO函数 标准库提供的带缓冲IO函数是为了减少 read 和 wri ...

  3. 如何正确设置 Informix GLS 及 CSDK 语言环境

    本文介绍 GLS 相关知识,说明如何正确设置 Informix GLS 语言环境相关变量(DB_LOCALE,CLIENT_LOCALE),保证 Informix 数据库服务器.客户端能正确的支持中文 ...

  4. JSP状态管理 及 Cookie实例

    HTTP协议的无状态性 无状态是指,当浏览器发送请求给服务器的时候,服务器响应客户端的请求. 但是当同一个浏览器再次发送请求给了服务器的时候,服务器并不知道它就是刚才那个浏览器. 简单地说,就是服务器 ...

  5. Zabbix-3.0.0 安装Graphtree

    导读 Zabbix中,想要集中展示图像,唯一的选择是screen,后来zatree解决了screen的问题,但性能不够好.Graphtree 由OneOaaS开发并开源出来,用来解决Zabbix的图形 ...

  6. iOS-多线程的底层实现

    (1)首先回答什么是线程 1个进程要想执行任务,必须得有线程.线程是进程的基本执行单元,一个进程(程序)的所有任务都在线程中执行 (2)什么是多线程 1个进程中可以开启多条线程,每条线程可以并行(同时 ...

  7. 【黑金原创教程】【TimeQuest】【第一章】TimeQuest 静态时序分析模型的概念

      声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/ ...

  8. eclipse中的SVN文件还原到历史版本

    转载自:http://www.softown.cn/post/103.html 由于某些特殊原因,我们可能需要将SVN资源库中的某个文件回滚到以前的某个历史版本(准确地说,这不是"回滚&qu ...

  9. C 语言开发初涉-01 简单学习

    尝试用C语言写windows程序: 简单的计算器 1.0版,仅用来熟悉C 开发windows的一些语法和语句用法 #include "stdafx.h" #include < ...

  10. Spring 之注解事务 @Transactional(转载)

    Spring在TransactionDefinition接口中规定了7种类型的事务传播行为, 它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播: 事务传播行为类型 事务传播行为类型 说明 P ...