博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个诡异的ngnix配置重定向问题的排查
阅读量:6295 次
发布时间:2019-06-22

本文共 1498 字,大约阅读时间需要 4 分钟。

hot3.png

现在手头上的项目是一个单页面应用,所有的页面和路由逻辑都是写死在一个js文件里的,所以路过想实现一个特定url调到对应的渲染页面的话,需要用js实现一个路由,并且在nginx上实现路径跳转到对应的js。这里的js路由使用react的route实现的。

一 NGINX的配置

134627_jI99_195637.png

这里的 rewrite的配置和tryfiles的写法一样,你也可以用下面的配置实现

但是某个页面还是没有跳转成功。nginx的accsslog出现了如下的记录.很明显,第二个路径被nginx干掉了

10.207.87.51?23355?-?[20/Jun/2016:16:36:07?+0800]?"GET?http://xxx.com/specs/indicator/tab/atom"?200?998?"-"?"Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/48.0.2564.109?Safari/537.36"?"-"?"-"?"0acf573314664117679067908e"

?
10.207.87.51?1947?-?[20/Jun/2016:16:34:33?+0800]?"GET?http://xxx.com/help-doc/helpdoc/chanpin"?302?258?"-"?"Mozilla/5.0?(Windows?NT?6.1;?WOW64)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/48.0.2564.109?Safari/537.36"?"-"?"-"?"0acf573314664116733311513e"

 

二 正常调用一个地址能够正确通过nginx路由到根目录的index页面

http://xxx.com/specs/indicator/tab/atom 它的reponse是index页面

三 访问新加的地址没有正确通过ngnix的路由,而是越过了ngnix直接打到了tomcat的对应地址

http://xxx.com/help-doc/helpdoc/chanpin 路径B 没有redirect到index页面.reopnse也是调进了tomcat的对应页面

四 随机访问一个不正确的地址,nginx可以正确路由到根目录的index文件

为了验证是不是NGINX的问题,这里再随机访问一个不存在的页面,通过nginxlocation的配置也应该返回index的内容。实际上正好返回的是nginx的内容

六 解决方案

为什么其他路径都是ok的,是不是nginx把helpdoc或者help-doc这样的字做了关键字?改造所有的前端路由及连接,将helpdoc都改成assist

我在indexvm页面增加一段脚本,如果url可以通过nginx写回到根目录,就会弹出一个提示框

重新加载之前404的页面,发现可以正确打出这个alert框,并且路径渲染成功

七 问题原因

为什么改一个路径就生效了?

第一段配置是什么?

135145_9wbQ_195637.png

请注意 .do 点在正则里是任意字符的意思,那我出错的地址是什么helpdoc啊。helpdoc里有什么,do吖。。。

所以原因就是helpdoc被.do 匹配了然后这没有走第二段的重定向,直接落到了tomcat下。

问题修复很简单,将第一段配置改成如下,注意反斜杠转义

135212_aKZ9_195637.png
 

转载于:https://my.oschina.net/zimingforever/blog/699827

你可能感兴趣的文章
pitfall override private method
查看>>
!important 和 * ----hack
查看>>
聊天界面图文混排
查看>>
控件的拖动
查看>>
svn eclipse unable to load default svn client的解决办法
查看>>
Android.mk 文件语法详解
查看>>
QT liunx 工具下载
查看>>
内核源码树
查看>>
Java 5 特性 Instrumentation 实践
查看>>
AppScan使用
查看>>
Java NIO框架Netty教程(三) 字符串消息收发(转)
查看>>
Ucenter 会员同步登录通讯原理
查看>>
php--------获取当前时间、时间戳
查看>>
Spring MVC中文文档翻译发布
查看>>
docker centos环境部署tomcat
查看>>
JavaScript 基础(九): 条件 语句
查看>>
Linux系统固定IP配置
查看>>
配置Quartz
查看>>
Linux 线程实现机制分析
查看>>
继承自ActionBarActivity的activity的activity theme问题
查看>>