Nginx 在传递给 PHP-FPM 路由之前没有检查 .php 文件是否存在?

Nginx 在传递给 PHP-FPM 路由之前没有检查 .php 文件是否存在?

我正在使用 Slim 3 编写一个 Web 应用程序,但在让 nginx 与我的一条路线顺利配合方面遇到了困难。

我的应用程序允许用户上传文件并查看它们,这很简单。这会生成类似 的 URL /viewfile/{user_id}/{filename}。当文件名以 结尾时.php,我希望 nginxtry_files在尝试将其传递给 php-fpm 之前检测它是否存在。但是,我认为php位置块仍在尝试将其作为有效的 PHP 文件提供,因为No input file specified.当我尝试查看上传的 php 文件时,我不断收到 php-fpm 的错误。

有没有办法让 nginx 不尝试使用 php-fpm 提供所有 PHP 文件,而是index.php像其他不存在的 URL 一样将其传递给它,但仍然保持只现存的要提供的 PHP 文件?

这是我的配置,如果有必要的话,我会删减到相关部分:

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;

    root /var/www/html/public;
    index index.php index.html index.htm;

    server_name {redacted};

    location / {
        try_files $uri $uri/ /index.php;
    }

    location ~ \.php$ {
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $request_filename;
        fastcgi_pass unix:/run/php-fpm/php7.0-fpm.sock;
        include fastcgi_params;
    }
}

相关内容