|
|
Opslået på 07/11/2018 10.05.15
|
|
|

BBS eller hjemmesider har ofte kun dig til at se denne side eller downloade denne ressource. For et par dage siden besøgte jeg nginx-serveren for at bruge x-sendfile, hvordan man implementerer denne filkontrol.
1. Hvad er X-Sendfile?
X-Sendfile er en mekanisme, der videresender fildownloadanmodninger fra backend-applikationen til front-end webserveren til behandling, hvilket kan forbedre serverens effektivitet betydeligt ved at fjerne presset fra backend-programmet for at læse og behandle filen for at behandle afsendelsen, især ved store fildownloads.
X-Sendfile implementeres gennem et specifikt HTTP-header: der angiver adressen på en fil i X-Sendfile-headeren for at annoncere til front-end webserveren. Når webserveren opdager dette header, der sendes af backend, ignorerer den andet output fra backend og bruger sine egne komponenter (herunder optimeringer som cache-headere og breakpoint-genforbindelser) til at sende filen til brugeren.
Men før man bruger X-Sendfile, er det vigtigt at forstå, at dette ikke er en standardfunktion og som standard deaktiveres af de fleste webservere. Forskellige webservere har forskellige implementeringer, herunder forskellige X-Sendfile-headerformater. Hvis den er forkert konfigureret, kan brugere downloade en 0-byte fil.
Brug af X-Sendfile vil tillade download af filer i ikke-webmapper (f.eks. /root/), selvom filen er deaktiveret under .htaccess-beskyttelse.
Forskellige webservere implementerer forskellige HTTP-headere
SENDFILE-header | WEB-server brugt | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirect | Nginx, Cherokee |
Ulempen ved at bruge X-SendFile er, at du mister kontrollen over filoverførselsmekanismen. For eksempel, hvis du vil udføre visse handlinger efter at have downloadet en fil, såsom at lade brugeren downloade filen kun én gang, vil denne X-Sendfile ikke kunne gøre det, fordi php-scriptet i baggrunden ikke ved, om downloadet er lykkedes.
2. Hvordan bruger man NGINX?
Nginx understøtter denne funktion som standard og kræver ikke, at der indlæses yderligere moduler. Det er bare, at implementeringen er lidt anderledes, og den HTTP-header, der skal sendes, er X-Accel-Redirect. Derudover skal du foretage følgende indstillinger i konfigurationsfilen
intern betyder, at denne sti kun kan tilgås inden for Nginx og ikke kan tilgås direkte af browseren for at forhindre uautoriserede downloads.
3. Hvordan bruger man PHP-programmer?
Hvis du tilføjer X-Accel-Redirect-headeren, vil brugeren downloade filen under /game path. Vores filtilladelseskontrol er implementeret.
Introduktion til officiel dokumentation:Hyperlink-login er synlig.
|
Tidligere:Kærlighed, ægteskab og familie, første halvdel af måneden + 18. juniNæste:CF er det første perspektiv på hele netværket, der selvsigter og stabiliserer sig i en måned
|