"Файл не найден" с использованием Apache X-Sendfile для смонтированного файла NFS (Yii2 xSendFile)
У меня есть смонтированный том NFS на сервере Linux, который используется для обслуживания файлов через Apache X-Sendfile из каталога загрузки, который содержит подпапки со смонтированными томами из различных сетевых ресурсов, а именно:
.../runtime/uploads/local/file1.jpg
.../runtime/uploads/remote1/file2.jpg
.../runtime/uploads/remote2/file3.jpg
Я проверил, что файл существует и может обслуживаться apache из монтирования NFS с использованием Yii sendFile, но переключение на xSendFile вызывает ошибку not found, только для файлов в монтировании NFS.
xSendFile отлично работает, обслуживая файлы с локального тома.
Вот метод контроллера для обслуживания файлов
public function actionDownload($f) {
$fileModel = Files::find()->alias('t')->where(['=', 't.path', $f])->one();
// authorization stuff here ///
$authorizedPath=$fileModel->filePath;
// Yii::$app->response->sendFile($authorizedPath, $fileModel->original_filename)->send(); // <--- this works for NFS file
Yii::$app->response->xSendFile($authorizedPath, $fileModel->original_filename); // <-- only works for non-NFS files
}
Кажется, что NFS и X-SendFile не играют хорошо, но я не могу найти какую-либо конкретную информацию о том, что невозможно обслуживать файлы NFS с X-SendFile.
Есть это... https://ruthealee.co.uk/2017/09/29/the-mysterious/
Вывод, кажется, заключается в том, что для файлов NFS существует ограничение в 2 ГБ и возможная проблема с кешем. Это не означает, что NFS явно запрещена, но не работает.