|
|
Publicerad på 2018-11-07 10:05:15
|
|
|

BBS eller webbplatser har ofta bara du som har behörighet att se denna sida eller ladda ner denna resurs, för några dagar sedan besökte jag nginx-servern för hur man implementerar denna filkontroll, med x-sendfile.
1. Vad är X-Sendfile?
X-Sendfile är en mekanism som vidarebefordrar filnedladdningsförfrågningar från backend-applikationen till frontend-webbservern för bearbetning, vilket kan förbättra serverns effektivitet avsevärt genom att ta bort pressen från backend-programmet att läsa och bearbeta filen för att sedan bearbeta sändningen, särskilt vid stora filnedladdningar.
X-Sendfile implementeras genom en specifik HTTP-header: som specificerar adressen till en fil i X-Sendfile-headern för att annonsera till frontend-webbservern. När webbservern upptäcker denna header som skickas av backend, ignorerar den annan utdata från backend och använder sina egna komponenter (inklusive optimeringar som cacheheaders och brytpunktsåteranslutningar) för att skicka filen till användaren.
Men innan du använder X-Sendfile är det viktigt att förstå att detta inte är en standardfunktion och är inaktiverad av de flesta webbservrar som standard. Olika webbservrar har olika implementationer, inklusive olika X-Sendfile-headerformat. Om den är felkonfigurerad kan användare ladda ner en 0-bytesfil.
Att använda X-Sendfile tillåter nedladdning av filer i icke-webbkataloger (t.ex. /root/) även om filen är inaktiverad under .htaccess-skyddet.
Olika webbservrar implementerar olika HTTP-headers
SENDFILE-header | WEB-server som används | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-omdirigering | Nginx, Cherokee |
Nackdelen med att använda X-SendFile är att du förlorar kontrollen över filöverföringsmekanismen. Till exempel, om du vill utföra vissa åtgärder efter att ha laddat ner en fil, till exempel att låta användaren ladda ner filen bara en gång, kommer denna X-Sendfile inte att kunna göra det eftersom php-skriptet i bakgrunden inte vet om nedladdningen är framgångsrik.
2. Hur använder man NGINX?
Nginx stöder denna funktion som standard och kräver inga ytterligare moduler för att laddas. Det är bara det att implementationen är lite annorlunda, och HTTP-headern som behöver skickas är X-Accel-Redirect. Dessutom behöver du göra följande inställningar i konfigurationsfilen
intern innebär att denna sökväg endast kan nås inom Nginx och inte kan nås direkt av webbläsaren för att förhindra obehöriga nedladdningar.
3. Hur använder man PHP-program?
Om du lägger till X-Accel-Redirect-headern kommer användaren att ladda ner filen under /game path. Vår filbehörighetskontroll är implementerad.
Officiell dokumentationsintroduktion:Inloggningen med hyperlänken är synlig.
|
Föregående:Kärlek, äktenskap och familj, första halvan av månaden + 18 juniNästa:CF är det första perspektivet på hela nätverket som självsiktar och stabiliserar sig i en månad
|