В приложении 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, но эта проблема все еще беспокоит меня в течение многих часов. Очень ценю вашу помощь в решении этой проблемы.