Индекс каталога nginx запрещен (ошибка 403) - PullRequest
0 голосов
/ 06 мая 2018

В приложении node.js у меня есть странная проблема, что все медиа-файлы получают ошибку 403 от nginx. структура файлов такая:

/www/
└── app
    ├── assets
    │   ├── fonts
    │   │   └── bootstrap
    │   ├── images
    │   │   ├── ios
    │   │   └── photoswipe
    │   ├── js
    │   └── vendor-css
    └── public  <-----------(here is the problem)
        └── files
            ├── attachments
            │   ├── thumbnails
            │   └── thumbnails2
            └── profilepics

А вот мой конфиг nginx

server {
  listen example.com:80 default_server;
  server_name example.com;
  root /www/app;

  location ~ ^/media/ {
   alias /www/app/public/files;
  }


  location / {
   root /www/app;
  }

 location ~ ^/assets/ {
   root /www/app;
  }

  location ~ ^.+\..+$ {
    try_files $uri =404;
  }

}


server {
  listen api.example.com:80;
  server_name api.example.com;
  location / {
   proxy_pass http://localhost:3000;
   proxy_http_version 1.1;
   proxy_set_header X-Forwarded-Proto https;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection 'upgrade';
   proxy_set_header Host $host;
   proxy_cache_bypass $http_upgrade;

  }
}

Я установил 777 в качестве разрешения на файл для /www (я знаю, что это не очень хорошая практика, но только для тестирования):

# ls -al /www
total 6212
drwxrwxrwx  3 www-data www-data    4096 May  4 03:26 .
drwxr-xr-x 24 root     root        4096 May  4 00:24 ..
drwxrwxrwx  4 www-data www-data    4096 May  5 16:08 app



ls -al /www/app/public/files
total 16
drwxrwxrwx 4 www-data www-data 4096 May  5 15:59 .
drwxrwxrwx 3 www-data www-data 4096 May  5 15:59 ..
drwxrwxrwx 4 www-data www-data 4096 May  5 16:10 attachments
drwxrwxrwx 2 www-data www-data 4096 May  5 15:59 profilepics

Пример журнала ошибок nginx:

[ошибка] 30102 # 30102: * 34 индекс каталога "/ www / app / public / files" запрещено, клиент: 1.2.3.4, сервер: example.com, запрос: "GET /media/attachments/mycat.jpg/ HTTP / 1.1 ", хост:" example.com ", реферер: "http://example.com/"

Обратите внимание, что nginx автоматически добавляет завершающий слеш.

Когда я пытаюсь получить mycat.jpg (без косой черты), используя curl, я получаю:

301 постоянно перемещено

Файлы по другому пути, т.е. /www/app/assets отображаются правильно.

Я перешел по пути к /public/files и настроил конфигурацию nginx, но эта проблема все еще беспокоит меня в течение многих часов. Очень ценю вашу помощь в решении этой проблемы.

1 Ответ

0 голосов
/ 06 мая 2018

Быть root должен решить проблему. Вы root, пытаясь получить доступ к изображению "mycat.jpg"? А каковы ваши правила доступа, вы можете изменить их, используя "chmod"

...