Давайте по шагам разберем, что именно может вызывать ошибку 404 при проверке наличия файла в вашем Nginx конфигурационном файле.
1. **Проблема с синтаксисом переменных**:
В вашем блоке `try_files` вы используете переменную `$image`, но не определяется, откуда она берется. Если она не установлена ранее в файле конфигурации, это может быть причиной проблемы. Проверьте, что вы правильно определили путь к файлу и что он соответствует ожидаемому.
2. **Правильное создание переменной `image_original_tmp_folder_name`**:
Вы создаете переменную `image_original_tmp_folder_name` из параметра `image`, однако в паттерне вы используете `~\/chunk_folder\/(.*)$` и берете только первую часть, которая идет после `chunk_folder`. Если в параметре передан некорректный URL или нужные части отсутствуют, переменная может быть пустой. Убедитесь, что параметр `image` действительно содержит ожидаемый формат.
3. **Проверка пути к файлу**:
Во время конфигурации строки `$image_original_tmp$image_original_tmp_folder_name`, она должна составлять полный и корректный путь к файлу. В вашем случае это будет выглядеть так:
```
/public/tmp/original/domain/FOLDER_RANDOM/FILE.jpg
```
Проверьте, действительно ли этот файл существует по указанному пути.
4. **Корректная работа директивы `try_files`**:
В выражении `try_files $image$uri $image_original_tmp$image_original_tmp_folder_name @errors` вы, скорее всего, хотите проверить два пути. Убедитесь, что в этом выражении правильно прописаны переменные, которые вы хотите использовать. В текущем виде строка `$image$uri` может не выполнять нужную проверку, если переменная `$image` не определена корректно.
Попробуйте изменить выражение на что-то вроде:
```nginx
try_files $uri $image_original_tmp$image_original_tmp_folder_name @errors;
```
5. **Логи**:
Включите журнал ошибок и в журнале доступа, чтобы просмотреть более детальную информацию об ошибках, которые могут помочь вам диагностировать проблему.
Пример исправления:
```nginx
map $arg_image $image_original_tmp_folder_name {
default "";
~\/chunk_folder\/(.*)$ "$1";
}
server {
set $image_original_tmp /public/tmp/original/domain/;
location @original {
try_files $uri $image_original_tmp$image_original_tmp_folder_name @errors;
}
location @errors {
return 404;
}
}
```
Ваша финальная конфигурация должна корректно обрабатывать путь к файлу, если переменные определены верно и файл действительно существует по заданному пути.