Обслуживание файлов с помощью PocketBase
Я хочу ограничить доступ к файлам для неавторизованного пользователя.
В документации PocketBase сказано, что я могу получить URL-адрес файла и получить доступ к файлам через него. Пример URL-адреса файла будет таким:
http://127.0.0.1:8090/api/files/example/kfzjt5oy8r34hvn/test_52iWbGinWd.png
Я могу запретить неавторизованным пользователям получать этот URL-адрес, но авторизованные пользователи могут делиться URL-адресом с другим.
Есть идеи?
1 ответ
Я нашел хороший способ защитить файлы с помощью nginx, добавив дополнительное место для моего блока сервера PocketBase и используя дополнительный бэкэнд с одной конечной точкой.
Итак, мой nginx выглядит так:
server {
listen 80;
server_name example.com;
location /api/files {
proxy_intercept_errors on;
error_page 404 = @fallback;
proxy_pass http://127.0.0.1:5000;
}
location / {
proxy_pass http://127.0.0.1:8090;
}
location @fallback {
proxy_pass http://127.0.0.1:8090;
}
}
Где мой бэкэнд expressjs, работающий на порту:5000, проверяет JWT и отвечает 404, если он действителен. Nginx перенаправит на:8090 (PocketBase), если 404 вернется на:5000.