NGINX在有效的url上返回404错误

我们有一个运行PHP-FPM和NGINX的网站。 应用程序向使用40个字符的随机string键入的网站成员发送邀请(仅限字母数字 – 下面的示例)。 今天我们第一次遇到这个问题。 以下url:

http://oursite.com/notices/response/approve/1960/OzH0pedV3rJhefFlMezDuoOQSomlUVdhJUliAhjS 

正在返回一个404错误。 这种url格式已经工作了6个月,现在没有问题,其他url继续正确parsing。 我们有一个非常基本的configuration,一个简单的redirect到一个前端控制器,其他一切现在已经运行良好。

另外,如果我们将最后一个字符从“S”改为小写“s”以外的任何字符,404错误并且站点正确地处理请求,所以我想知道是否有某个安全模块可能会看到错误的具体string…不知道这是否有道理。

我们不确定在哪里寻找具体是什么导致问题,所以任何方向将不胜感激。

谢谢!

更新:在URL的末尾添加一个斜线,可以正确处理它…仍然希望能够深入到问题的底部。

解决:问题是由我的configuration的一部分引起的…意识到我应该张贴,但是出城,没有机会。

任何以“css”或“js”结尾并且不一定以点为前缀的URL(例如, http://site.com/response/somerandomestringcss )被解释为对文件的请求,并且请求是不通过前端控制器路由。 问题是我的正则expression式禁用日志logging,并在jpgs,gifs,icos等设置过期标题

我replace了这个:

 location ~* ^.+(jpg|jpeg|gif|css|png|js|ico)$ { 

有了这个:

 location ~* \.(jpg|jpeg|gif|css|png|js|ico)$ { 

而现在以css,js,png等结尾的url都是通过前端控制器正确路由的。 希望能帮助别人。

从OP:

这是configuration文件的问题; 我有条件地设置到期头和禁用图像,js,css,ico文件等日志logging我有:

  location ~* ^.+(jpeg|jpg|gif|css|png|js|ico)${ 

并将其更改为:

  location ~* \.(jpeg|jpg|gif|css|png|js|ico)${ 

现在,当我请求一个以这些string之一结尾的URL时,它会将其parsing为一个url,而不是一个文件,所以不会再出现404错误。

也许你的URL正则expression式不包括正确的方式大写字符。 你可以在这里发布吗?