Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 10873|Svare: 0

[Web] Kontroller filtilgang ved hjelp av Nginx sin X-Sendfile-mekanisme (php-versjon)

[Kopier lenke]
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-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirectNginx, 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. juni
Neste:CF er det første perspektivet på hele nettverket som har selvsiktet og stabilisert seg i én måned
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com