无法使用fastcgi_pass测试nginx配置中的$ status到php-fpm - 状态为000

时间:2016-08-01 15:26:08

标签: php nginx

我们在Ubuntu 16.04上有一个非常繁忙的网站,有nginx,php-fpm(7)。

我们希望仅在php(http状态代码404,500,...)中发生错误时存储日志,因此我们在服务器配置中设置此项:

set $logit 0;
  if ($status ~ ^[45]) {
        set $logit 1;
        }
 access_log /var/log/nginx/xxx.access condensed if=$logit;

但我们没有存储错误:(。

当我们启用调试模式时,我们会看到:

2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script if
2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script if: false
2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script var
2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script var: "000"
2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script regex: "^[45]"
2016/08/01 16:55:37 [notice] 28852#28852: *7258 "^[45]" does not match "000", client: 87.138.160.167, server: xxx, request: "GET / HTTP/1.1", host: "xxx"
2016/08/01 16:55:37 [debug] 28852#28852: *7258 http script if

因此,在if语句中,$ status被评估为“000”

当我添加它进行调试时:

add_header test-debug $status always;

我得到test-debug:404

我想问题是这是php-fpm的代理,所以状态只是稍后由php-fpm的响应设置,但是找不到要测试的变量?

0 个答案:

没有答案