|
|
Zveřejněno 07.11.2018 10:05:15
|
|
|

BBS nebo weby často mají pouze povolení vidět tuto stránku nebo stáhnout tento zdroj, před pár dny jsem navštívil server nginx, jak implementovat tuto kontrolu souborů, pomocí x-sendfile.
1. Co je X-Sendfile?
X-Sendfile je mechanismus, který předává požadavky na stažení souborů z backendové aplikace na front-end webový server k jejich zpracování, což může výrazně zlepšit efektivitu serveru tím, že odstraní tlak na back-end program při čtení a zpracování souboru pro zpracování odeslání, zejména při velkých stahováních.
X-Sendfile je implementován pomocí specifické HTTP hlavičky: určení adresy souboru v hlavičce X-Sendfile, která má být propagována front-end webovému serveru. Když webový server detekuje tuto hlavičku odeslanou backendem, ignoruje ostatní výstupy z backendu a používá vlastní komponenty (včetně optimalizací, jako jsou hlavičky cache a přerušení přerušení), aby soubor odeslal uživateli.
Před použitím X-Sendfile je však důležité pochopit, že to není standardní funkce a většina webových serverů ji ve výchozím nastavení zakáže. Různé webové servery mají různé implementace, včetně různých formátů hlaviček X-Sendfile. Pokud je nesprávně nastaveno, uživatelé si mohou stáhnout soubor o velikosti 0 bajtů.
Použití X-Sendfile umožní stahování souborů z newebových adresářů (např. /root/), i když je soubor zakázán v rámci ochrany .htaccess.
Různé webové servery implementují různé 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-Redirection | Nginx, Cherokee |
Nevýhodou používání X-SendFile je, že ztratíte kontrolu nad mechanismem přenosu souborů. Například pokud chcete po stažení souboru provést určité činnosti, například umožnit uživateli stáhnout soubor pouze jednou, tento X-Sendfile to neudělá, protože php skript na pozadí neví, zda je stažení úspěšné.
2. Jak používat NGINX?
Nginx tuto funkci ve výchozím nastavení podporuje a nevyžaduje načítání dalších modulů. Jenže implementace je trochu jiná a HTTP hlavička, kterou je třeba odeslat, je X-Accel-Redirect. Kromě toho musíte v konfiguračním souboru nastavit následující nastavení
interní znamená, že tato cesta je přístupná pouze v rámci Nginx a nemůže být přímo přístupná prohlížečem, aby se zabránilo neoprávněnému stahování.
3. Jak používat PHP programy?
Pokud přidáte hlavičku X-Accel-Redirect, uživatel si soubor stáhne pod cestou /game. Naše kontrola oprávnění k souborům je implementována.
Oficiální dokumentace úvod:Přihlášení k hypertextovému odkazu je viditelné.
|
Předchozí:Láska, manželství a rodina, první polovina měsíce + 18. červnaDalší:CF je první pohled na celou síť, který se na jeden měsíc zaměřuje a stabilizuje
|