Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 10873|Відповідь: 0

[Веб] Контроль доступу до файлів за допомогою механізму X-Sendfile від Nginx (php-версія)

[Копіювати посилання]
Опубліковано 07.11.2018 10:05:15 | | |
BBS або вебсайти часто мають лише ви маєте дозвіл на перегляд цієї сторінки або завантаження цього ресурсу. Кілька днів тому я відвідав сервер nginx, як реалізувати цей контроль файлів, використовуючи x-sendfile.

1. Що таке X-Sendfile?

X-Sendfile — це механізм, який ретранслює запити на завантаження файлів із бекенд-додатку на фронтенд-веб-сервер для обробки, що може суттєво підвищити ефективність сервера, знімаючи тиск бекенд-програми читати та обробляти файл для отримання надсилання, особливо при великих завантаженнях файлів.

X-Sendfile реалізується через спеціальний HTTP-заголовок: вказуючи адресу файлу в заголовку X-Sendfile для реклами на фронтенд-веб-сервері. Коли веб-сервер виявляє цей заголовок, надіставлений бекендом, він ігнорує інший вихід бекенду і використовує власні компоненти (включаючи оптимізації, такі як заголовки кешу та повторне підключення точки збої на точці розриву), щоб надіслати файл користувачу.

Однак перед використанням X-Sendfile важливо розуміти, що це не стандартна функція і за замовчуванням вимкнена більшістю веб-серверів. Різні веб-сервери мають різні реалізації, включаючи різні формати заголовків X-Sendfile. У разі неправильної конфігурації користувачі можуть завантажити файл розміром 0 байт.

Використання X-Sendfile дозволяє завантажувати файли в не-веб-каталогах (наприклад, /root/), навіть якщо файл вимкнений під захистом .htaccess.

Різні веб-сервери реалізують різні HTTP-заголовки

Заголовок SENDFILE
Використання веб-сервера
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectНгінкс, черокі

Недолік використання X-SendFile у тому, що ви втрачаєте контроль над механізмом передачі файлів. Наприклад, якщо ви хочете виконати певні дії після завантаження файлу, наприклад, дозволити користувачу завантажити файл лише один раз, цей X-Sendfile не зможе цього зробити, оскільки php-скрипт у фоновому режимі не знає, чи успішне завантаження.

2. Як користуватися NGINX?

Nginx підтримує цю функцію за замовчуванням і не вимагає додаткового завантаження модулів. Просто реалізація трохи інша, і HTTP-заголовок, який потрібно надіслати — це X-Accel-Redirect. Крім того, потрібно зробити такі налаштування у файлі конфігурації

внутрішній означає, що цей шлях можна отримати лише в межах Nginx і не може бути доступний безпосередньо браузером для запобігання несанкціонованим завантаженням.

3. Як користуватися PHP-програмами?


Якщо додати заголовок X-Accel-Redirect, користувач завантажить файл у напрямку /game. Наш контроль дозволу файлу реалізовано.

Офіційне вступ до документації:Вхід за гіперпосиланням видно.




Попередній:Любов, шлюб і сім'я, перша половина місяця + 18 червня
Наступний:Муковісна — це перша перспектива для всієї мережі, яка дозволяє самостійно прицілитися і стабілізувати її протягом місяця
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com