• 幕客老师召集小伙伴
  • 运维高手36项修炼
  • python自动化运维项目实战
  • nginx从入门到实战
  • 阿里云与Centos7实战

[lNMP架构]Nginx中tryfile配置问题导致前端500错误分析

今天同事在测试discuz这款论坛,在搭建完毕后,访问某个地址时候报错:500 Internal error。

常常在分析http错误时,会基于http错误响应头分析问题,如500,由于采用的LNMP架构,其他的php页面也能访问,所以迅速的将问题定位在在cgi执行错误报错。

首先:问题由于php引起,我们需要将错误日志输出来,这个地方我觉得有几个地方需要注意:

1、防止代理接管500 的错误请求,如nginx.conf下如下配置:

        # redirect server error pages to the static page /50x.html

        #

        #error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   /usr/share/nginx/html;

        }

2、php.ini配置不起作用中由于程序的框架,改变日志输出级别。

这种情况可以通过修改入口文件如index.php等,在文件末尾加入如下:

        error_reporting(E_ALL);
        ini_set('display_errors', 1);

3、php.ini配置不起作用,被php-fpm.conf文件中配置替换。

如,在用过php info打印对应的日志信息时,发现配置不生效。其实是被php-fpm.conf中global配置引起。

===============================================

但是这次确实通过这些方法,仍就没有顺利输出我们错误日志。

是否该该回到从前起点,想象,是不是一开始自己的自考问题主线就有错误。于是开始检查,检查到nginx.conf配置。

#location / {

#            try_files $uri $uri/ /index.php$uri?$args;

#        }

发现了这条配置很可疑,另外通过查看nginx的error.log

2015/06/24 17:23:56 [error] 6489#0: *401 rewrite or internal redirection cycle while internally redirecting to "/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/index.php/template/gee/img/02.png", client: 10.10.188.45, server: , request: "GET /template/gee/img/02.png HTTP/1.1", host: "10.10.72.83:8888", referrer: "http://10.10.72.83:8888/forum.php"

 

二、nginx中tryfiles配置作用

try_files 是nginx0.6.36 后新增一个功能,用于搜索指定目录下的N个文件,如果找不到fileN,则调用fallback中指定的位置来处理请求。

Nginx try_files 使用时注意,如果所有列出的都不存在时,Nginx提示 500错误,

 

三、解决,总结

 理论上正常情况 应该是404,原因在于使用 try_files 要手动设置最后一个设为 =404;

 try_files $uri $uri/ /index.php$uri?$args; 需要对应修改成  try_files $uri $uri/ /index.php$uri?$args =404;

 

问题定位清楚,我们往往有了不错的经验,有事也会被经验所糊弄!

[lNMP架构]Nginx中tryfile配置问题导致前端500错误分析

Pingbacks已打开。

引用地址

暂无评论

发表评论