|
|
Zverejnené 7. 11. 2018 10:05:15
|
|
|

BBS alebo webové stránky často majú povolenie vidieť túto stránku alebo stiahnuť tento zdroj, pred pár dňami som navštívil nginx server, ako implementovať túto kontrolu súborov, pomocou x-sendfile.
1. Čo je X-Sendfile?
X-Sendfile je mechanizmus, ktorý prenáša požiadavky na stiahnutie súborov z backendovej aplikácie na front-end webový server na spracovanie, čo môže výrazne zlepšiť efektivitu servera tým, že odstráni tlak backendového programu na čítanie a spracovanie súboru na spracovanie odoslania, najmä pri veľkých sťahovaniach súborov.
X-Sendfile je implementovaný prostredníctvom špecifickej HTTP hlavičky: špecifikuje adresu súboru v hlavičke X-Sendfile, aby sa propagovala front-end webovému serveru. Keď webový server deteguje túto hlavičku odoslanú backendom, ignoruje ostatné výstupy z backendu a používa vlastné komponenty (vrátane optimalizácií ako hlavičky cache a prerušovacie pripojenia) na odoslanie súboru používateľovi.
Pred použitím X-Sendfile je však dôležité pochopiť, že to nie je štandardná funkcia a väčšina webových serverov ju štandardne deaktivuje. Rôzne webové servery majú rôzne implementácie, vrátane rôznych formátov hlavičiek X-Sendfile. Ak je nesprávne nastavený, používatelia si môžu stiahnuť súbor s veľkosťou 0 bajtov.
Použitie X-Sendfile umožní sťahovanie súborov z newebových adresárov (napr. /root/) aj v prípade, že súbor je deaktivovaný v rámci ochrany .htaccess.
Rôzne webové servery implementujú rôzne HTTP hlavičky
Hlavička SENDFILE | Použitý WEB server | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Presmerovanie | Nginx, Cherokeeovia |
Nevýhodou použitia X-SendFile je, že stratíte kontrolu nad mechanizmom prenosu súborov. Napríklad, ak chcete vykonať určité akcie po stiahnutí súboru, napríklad umožniť používateľovi stiahnuť súbor iba raz, tento X-Sendfile to nebude môcť urobiť, pretože php skript na pozadí nevie, či je stiahnutie úspešné.
2. Ako používať NGINX?
Nginx túto funkciu štandardne podporuje a nevyžaduje načítanie ďalších modulov. Lenže implementácia je trochu iná a HTTP hlavička, ktorú treba poslať, je X-Accel-Redirect. Okrem toho musíte v konfiguračnom súbore nastaviť nasledujúce nastavenia
interné znamená, že táto cesta je prístupná iba v rámci Nginx a prehliadač k nej nemôže pristupovať priamo, aby sa zabránilo neoprávnenému sťahovaniu.
3. Ako používať PHP programy?
Ak pridáte hlavičku X-Accel-Redirect, používateľ si súbor stiahne pod cestou /game. Naša kontrola oprávnení súborov je implementovaná.
Úvod k oficiálnej dokumentácii:Prihlásenie na hypertextový odkaz je viditeľné.
|
Predchádzajúci:Láska, manželstvo a rodina, prvá polovica mesiaca + 18. júnBudúci:CF je prvý pohľad celej siete, ktorý sa na jeden mesiac zameria a stabilizuje
|