Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 10873|Antwoord: 0

[Web] Beheer bestandstoegang met behulp van Nginx' X-Sendfile-mechanisme (php-versie)

[Link kopiëren]
Geplaatst op 07-11-2018 10:05:15 | | |
BBS of websites hebben vaak alleen jij toestemming om deze pagina te zien of deze bron te downloaden. Een paar dagen geleden bezocht ik de nginx-server om deze bestandscontrole te implementeren met x-sendfile.

1. Wat is X-Sendfile?

X-Sendfile is een mechanisme dat downloadverzoeken van bestanden van de backend-applicatie doorstuurt naar de front-end webserver voor verwerking, wat de serverefficiëntie aanzienlijk kan verbeteren door de druk van het back-end programma om het bestand te lezen en te verwerken om de verzending te verwerken, te verminderen, vooral bij grote bestandsdownloads.

X-Sendfile wordt geïmplementeerd via een specifieke HTTP-header: het adres van een bestand wordt gespecificeerd in de X-Sendfile-header om te adverteren aan de front-end webserver. Wanneer de webserver deze header van de backend detecteert, negeert hij andere output van de backend en gebruikt hij zijn eigen componenten (waaronder optimalisaties zoals cacheheaders en breakpoint-herverbindingen) om het bestand naar de gebruiker te sturen.

Voordat je echter X-Sendfile gebruikt, is het belangrijk te begrijpen dat dit geen standaardfunctie is en standaard door de meeste webservers wordt uitgeschakeld. Verschillende webservers hebben verschillende implementaties, waaronder verschillende X-Sendfile-headerformaten. Als deze verkeerd is geconfigureerd, kunnen gebruikers een 0-byte bestand downloaden.

Het gebruik van X-Sendfile maakt het mogelijk bestanden te downloaden in niet-webdirectories (bijv. /root/), zelfs als het bestand is uitgeschakeld onder .htaccess-bescherming.

Verschillende webservers implementeren verschillende HTTP-headers

SENDFILE-header
Gebruikt WEB-server
X-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Versnelling-OmleidingNginx, Cherokee

Het nadeel van het gebruik van X-SendFile is dat je de controle over het bestandsoverdrachtsmechanisme verliest. Als je bijvoorbeeld bepaalde acties wilt uitvoeren na het downloaden van een bestand, zoals de gebruiker toestaan het bestand slechts één keer te downloaden, kan deze X-Sendfile dat niet doen omdat het php-script op de achtergrond niet weet of de download succesvol is.

2. Hoe gebruik je NGINX?

Nginx ondersteunt deze functie standaard en vereist geen extra modules om te laden. Het is alleen dat de implementatie iets anders is, en de HTTP-header die verzonden moet worden is X-Accel-Redirect. Daarnaast moet je de volgende instellingen in het configuratiebestand maken

intern betekent dat dit pad alleen binnen Nginx toegankelijk is en niet direct door de browser kan worden benaderd om ongeautoriseerde downloads te voorkomen.

3. Hoe gebruik je PHP-programma's?


Als je de X-Accel-Redirect-header toevoegt, downloadt de gebruiker het bestand onder het /game-pad. Onze bestandspermissiecontrole is geïmplementeerd.

Officiële documentatie-introductie:De hyperlink-login is zichtbaar.




Vorig:Liefde, huwelijk en gezin, eerste helft van de maand + 18 juni
Volgend:CF is het eerste perspectief op het hele netwerk dat zichzelf richt en stabiliseert gedurende een maand
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com