Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 10873|Отговор: 0

[Уеб] Контрол на достъпа до файлове чрез механизъм X-Sendfile на Nginx (php версия)

[Копирай линк]
Публикувано в 7.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 заглавие
Използване на WEB сървър
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-ПренасочванеНгинкс, чероки

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

2. Как да използвам NGINX?

Nginx поддържа тази функция по подразбиране и не изисква зареждане на допълнителни модули. Просто имплементацията е малко по-различна, а HTTP заглавието, което трябва да се изпрати, е X-Accel-Redirect. Освен това трябва да направите следните настройки в конфигурационния файл

вътрешен означава, че този път може да бъде достъпен само в рамките на Nginx и не може да бъде достъпен директно от браузъра, за да се предотвратят неоторизирани изтегляния.

3. Как да използвам PHP програми?


Ако добавите заглавието X-Accel-Redirect, потребителят ще изтегли файла под пътя /game. Нашият контрол за разрешение на файловете е реализиран.

Официално въведение в документацията:Входът към хиперлинк е видим.




Предишен:Любов, брак и семейство, първа половина на месеца + 18 юни
Следващ:CF е първата перспектива за цялата мрежа, която самостоятелно се насочва и стабилизира за един месец
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com