关闭特定路径的 access_log 但仍然允许 PHP 回滚

关闭特定路径的 access_log 但仍然允许 PHP 回滚

这是我的配置:

server {
    root /app/public;
    charset utf-8;
    server_tokens off;

    location / {
        try_files $uri @app;
    }

    location = /php-health {
        access_log off;
    }

    location = /nginx-health {
        access_log off;
        default_type text/plain;
        return 200 "Nginx OK";
    }

    location @app {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME /app/index.php;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

问题是,当我把那个location = /php-health块放在那里时,Nginx 不再通过 将请求转发到我的 PHP 应用程序location @app。我以为,由于没有语句,return它会“失败”,@app但这只是 404。

正确的做法是什么?

答案1

可能有或多或少有点黑客的方法可以做到这一点,但更改设置access_log是您可以安全地执行的操作之一if

例如:

location @app {
    if ($uri = /php-health) {
        access_log off;
    }
    #... the PHP directives ...

答案2

这是一个肮脏的伎俩,但你能尝试一下吗?

location = /php-health {
    access_log off;
    try_files /dev/null @app;
}

相关内容