Я пишу веб-приложение с использованием Slim 3, и мне трудно заставить nginx нормально работать с одним из моих маршрутов.
Мое приложение позволяет пользователям загружать файлы и просматривать их, достаточно просто. Это генерирует URL-адреса типа /viewfile/{user_id}/{filename}
. Когда имя файла заканчивается на .php
, Я бы ожидал, что nginx try_files
чтобы определить, существует ли он, прежде чем пытаться передать его в php-fpm. Однако я полагаю php
блок местоположения все еще пытается использовать его как действительный файл PHP, так как я продолжаю получать php-fpm No input file specified.
ошибка при попытке просмотра загруженного файла php.
Есть ли способ заставить nginx не пытаться обслуживать весь файл PHP с помощью php-fpm и вместо этого передавать его 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;
}
}