|
|
Опубліковано 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-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd 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 червняНаступний:Муковісна — це перша перспектива для всієї мережі, яка дозволяє самостійно прицілитися і стабілізувати її протягом місяця
|