|
|
Publisert på 07.11.2018 10:05:15
|
|
|

BBS-er eller nettsider har ofte bare deg som har tillatelse til å se denne siden, eller laste ned denne ressursen. For noen dager siden besøkte jeg nginx-serveren for hvordan implementere denne filkontrollen, ved å bruke x-sendfile.
1. Hva er X-Sendfile?
X-Sendfile er en mekanisme som videresender filnedlastingsforespørsler fra backend-applikasjonen til front-end webserveren for behandling, noe som kan forbedre serverens effektivitet betydelig ved å fjerne presset fra backend-programmet med å lese og behandle filen for å behandle sendingen, spesielt ved store filnedlastinger.
X-Sendfile implementeres gjennom en spesifikk HTTP-header: som spesifiserer adressen til en fil i X-Sendfile-headeren for å annonsere til front-end webserveren. Når webserveren oppdager denne headeren sendt av backend, ignorerer den annet output fra backend og bruker sine egne komponenter (inkludert optimaliseringer som cache-headere og breakpoint-rekoblinger) for å sende filen til brukeren.
Før man bruker X-Sendfile, er det imidlertid viktig å forstå at dette ikke er en standardfunksjon og som standard deaktiveres av de fleste webservere. Ulike webservere har ulike implementasjoner, inkludert forskjellige X-Sendfile-headerformater. Hvis feilkonfigurert, kan brukere laste ned en 0-byte fil.
Bruk av X-Sendfile vil tillate nedlasting av filer i ikke-webkataloger (f.eks. /root/) selv om filen er deaktivert under .htaccess-beskyttelse.
Ulike webservere implementerer forskjellige HTTP-headere
SENDFILE-header | Brukt WEB-server | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirect | Nginx, Cherokee |
Ulempen med å bruke X-SendFile er at du mister kontrollen over filoverføringsmekanismen. For eksempel, hvis du vil utføre visse handlinger etter nedlasting av en fil, for eksempel å la brukeren laste ned filen én gang, vil ikke denne X-Send-filen kunne gjøre det fordi PHP-skriptet i bakgrunnen ikke vet om nedlastingen er vellykket.
2. Hvordan bruke NGINX?
Nginx støtter denne funksjonen som standard og krever ikke at flere moduler lastes inn. Det er bare det at implementeringen er litt annerledes, og HTTP-headeren som må sendes er X-Accel-Redirect. I tillegg må du gjøre følgende innstillinger i konfigurasjonsfilen
intern betyr at denne stien kun kan nås innenfor Nginx og ikke kan nås direkte av nettleseren for å forhindre uautoriserte nedlastinger.
3. Hvordan bruke PHP-programmer?
Hvis du legger til X-Accel-Redirect-headeren, vil brukeren laste ned filen under /game path. Vår filtillatelseskontroll er implementert.
Offisiell dokumentasjonsintroduksjon:Innloggingen med hyperkoblingen er synlig.
|
Foregående:Kjærlighet, ekteskap og familie, første halvdel av måneden + 18. juniNeste:CF er det første perspektivet på hele nettverket som har selvsiktet og stabilisert seg i én måned
|