Arhn - архитектура программирования

Ошибка nginx: ошибка openat() (20: не каталог) для изображений

У меня есть проект PHP, REST API. Конфигурация Nginx работает для API, но не для загружаемых изображений.

Изображения всегда возвращают ошибку 404

проект начинается в каталоге /public, каталог загрузки находится внутри общедоступного, поэтому URL-адрес доступа к изображению выглядит примерно так:

DOMAIN.COM/upload/201812/20181204133821.jpg

Фактическая конфигурация NGINX

server {
    listen 80;
    listen [::]:80;

    set $root_path '/usr/share/nginx/html/api/public';
    root $root_path;

    index index.php index.html index.htm;
    server_name api-eduplus.blanco-estudio.com;

    #try_files $uri $uri/ @rewrite;
    try_files $uri $uri/ /index.php?q=$uri&$args;

    location ~* \.(jpg|jpeg|png|gif)$ {
        root $root_path;
        expires max;
        add_header Pragma public;
        add_header Cache-Control "public, must-revalidate, proxy-revalidate";
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    #error_log logs/error.log warn;
}

Таким образом, API начинается с каталога /public, а изображения загружаются в /public/upload/.

Также. В журнале ошибок nginx на сервере написано:

2018/12/04 16:35:54 [error] 17338: *1 openat() "/usr/share/nginx/html/api/public/upload/201812/20181204133821.jpg" failed (20: Not a directory), request: "GET /upload/201812/20181204133821.jpg HTTP/1.1"

Пожалуйста, помогите, я действительно застрял

04.12.2018

  • в чем именно проблема?: Запрошенный файл существует? У вас есть проблемы с загрузкой или скачиванием файлов? 05.12.2018
  • @NicoHaase Файл существует. Сервер возвращает ошибку 404 при загрузке файла 05.12.2018
  • И файл существует в этой самой позиции с соответствующими разрешениями? 05.12.2018
  • @NicoHaase существует именно на этой должности. Я уже изменил права доступа к тестируемому файлу. 644, 744, 755, 775, 777. 05.12.2018

Ответы:


1

Я только что исправил эту проблему на своем сервере. Причиной ошибки была символическая ссылка.

Я только что столкнулся с этим (не очень понятным) сообщением об ошибке в конфигурации nginx моего сервера:

"/path/to/index.html" is not found (20: Not a directory)

После некоторых проб и ошибок я определил, что фактическая причина заключалась в том, что nginx не мог получить доступ к корню документа сайта, потому что часть пути к root включала символическую ссылку, но у меня было установлено disable_symlinks on; в моем основном файле nginx.conf.

Комментирование строки disable_symlinks on; или изменение ее на disable_symlinks off; устраняет проблему.

Смотрите также:

04.05.2020
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..