我正在使用 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;
}
}