nginx File not found 错误

Posted maoxianfei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx File not found 错误相关的知识,希望对你有一定的参考价值。

一台slb转发请求到三台机器,分别装了nginx php.

三台机器配置相同,部署了两个项目。

访问https://deom.com/jiaoyin_fnt/app/manage/view/login.php 正常,三台机器都没问题,nginx日志正常。

访问 https://demo.com/jiaoyin_diaries_fnt/app/manage/view/login.php 三次中成功一次,其他两次请求会导致下载该页面。

解决过程:

新建测试文件  jiaoyin_diaries_fnt/app/manage/info.php 访问正常

新建测试文件  jiaoyin_diaries_fnt/app/manage/view/info.php 访问失败,三次成功一次

更改/view/ 为test 再访问,也是正常。

查看selinux关闭状态,修改777权限给jiaoyin_diaries_fnt

nginx 报错日志提示

2018/10/23 16:11:43 [error] 26959#0: *17897 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 127.0.0.1, server: jjcfh.sogood360.com, request: "GET /jiaoyin_diaries_fnt/app/manage/view/info.php HTTP/1.1", upstream: "fastcgi://127.0.0.1:9000", host: "127.0.0.1"

最后问题解决:

这个配置中有很多不合理的地方,其中一个明显的问题就是root指令被放到了location / 块。如果root指令被定义在location块中那么该root指令只能对其所在的location生效。其它locaiont中没有root指令,像location /images块不会匹配任何请求,需要在每个请求中重复配置root指令来解决这个问题。因此我们需要把root指令放在server块,这样各个location就会继承父server块定义的$document_root,如果某个location需要定义一个不同的$document_root,则可以在location单独定义一个root指令。

另一个问题就是fastCGI参数SCRIPT_FILENAME 是写死的。如果修改了root指令的值或者移动文件到别的目录,php-fpm会返回“No input file specified”错误,因为SCRIPT_FILENAME在配置中是写死的并没有随着$doucument_root变化而变化,我们可以修改SCRIPT_FILENAME配置如下:

location~.php${
try_files$uri=404; 拦截不存在的文件
fastcgi_pass127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME

 

 

上面的配置会检查.php文件是否存在,如果不存在,会返回404页面。

 
除非注明,本站文章均为: nginx.cn原创,转载请注明本文地址: http://www.nginx.cn/562.html

--完--

 

 
分类:nginx标签:
评论 (23)Trackbacks (5)发表评论Trackback
 
  1. 2018年3月21日06:31 | #1
     

    感谢。

     
  2. 技术分享图片
    aaa
    2018年1月25日17:25 | #2
     

    感谢

     
  3. 技术分享图片
    hello
    2017年9月19日21:39 | #3
     

    感谢

     
  4. 技术分享图片
    Lyon
    2017年4月12日17:26 | #4
     

    牛鼻

     
  5. 技术分享图片
    gz
    2017年2月24日14:53 | #5
     

    狂赞。。。很不错呢,,讲的十分到位,,按照你说的来,解决了问题

     
  6. 2016年4月1日10:17 | #6
     

    怒赞

     
  7. 技术分享图片
    Lv.4
    2016年3月2日20:42 | #7
     

    帮助解决了问题!!!!!抛出异常的感谢!!!!

     
  8. 技术分享图片
    123
    2016年1月5日14:08 | #8
     

    感谢

     
  9. 2015年1月1日17:38 | #9
     

    非常感谢,解决了我的问题 技术分享图片

     
  10. 2014年5月13日19:06 | #10
     

    找了好多, 看了你的才知道到底是什么问题 谢谢

     
  11. 2014年4月25日20:24 | #11
     

    还有一个可能是权限问题 php-fpm没有打开指定路径文件的权限

     
    • 2014年4月27日10:05 | #12
       

      技术分享图片

       
    • 技术分享图片
      euii
      2014年7月28日17:44 | #13
       

      多谢,因为看了你这一条的消息,才让我解决了问题。

       
    • 技术分享图片
      john
      2015年6月12日22:23 | #14
       

      很好,你的这条答案应该被作者采纳。解决了我的问题。

       
  12. 技术分享图片
    hizzx
    2014年2月10日17:02 | #15
     

    谢谢你,

    感觉你分享这个信息,解决了我的问题。

    再次感谢。

     
  13. 2014年1月4日13:40 | #16
     

    真心赞,直指问题所在,帮我解决了,多谢!

     
  14. 2013年12月9日00:03 | #17
     

    我的文件真实存在的啊,还说找不到

     
  15. 技术分享图片
    WilliamHu
    2013年11月24日11:20 | #18
     

    这个很赞!

     
  16. 技术分享图片
    xiaoxin
    2013年9月21日16:42 | #19
     

    谢谢,解决了我的问题。

     
  17. 技术分享图片
    delphi
    2013年7月5日10:05 | #20
     

    我的问题是file not found 采用了:一个问题就是fastCGI参数SCRIPT_FILENAME 是写死的。如果修改了root指令的值或者移动文件到别的目录,php-fpm会返回“No input file specified”错误,因为SCRIPT_FILENAME在配置中是写死的并没有随着$doucument_root变化而变化,我们可以修改SCRIPT_FILENAME配置如下:

    解决了我的问题啊,

     
  18. 技术分享图片
    jiang
    2013年6月3日08:38 | #22
     

    谢谢。。。非常感谢

     
  19. 2013年3月2日16:26 | #23
     

    网络中那么多, 你是讲得最清楚, 最明白的

     
 
 
 
 




以上是关于nginx File not found 错误的主要内容,如果未能解决你的问题,请参考以下文章

nginx File not found 错误

nginx运行出现 file not found 错误处理原因

nginx报 File not found 错误

Nginx访问PHP文件的File not found错误处理,两种情况

nginx对PHP文件报File not found.错

iOS开发 经典错误之 library not found for -xxxl 或'xxx.h'file not found