"Файл не найден" с использованием 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 явно запрещена, но не работает.

0 ответов

Другие вопросы по тегам