|
|
Postat pe 07.11.2018 10:05:15
|
|
|

BBS sau site-urile web au adesea doar permisiunea de a vedea această pagină sau de a descărca această resursă; acum câteva zile am vizitat serverul nginx folosind x-sendfile.
1. Ce este X-Sendfile?
X-Sendfile este un mecanism care retransmite cererile de descărcare de fișiere de la aplicația backend către serverul web front-end pentru procesare, ceea ce poate îmbunătăți semnificativ eficiența serverului prin eliminarea presiunii programului back-end de a citi și procesa fișierul pentru a procesa trimiterea, mai ales în cazul descărcărilor mari de fișiere.
X-Sendfile este implementat printr-un antet HTTP specific: specificând adresa unui fișier din antetul X-Sendfile pentru a fi promovat către serverul web front-end. Când serverul web detectează acest antet trimis de backend, ignoră celelalte ieșiri de la backend și folosește propriile componente (inclusiv optimizări precum antete de cache și reconectări prin puncte de întrerupere) pentru a trimite fișierul către utilizator.
Totuși, înainte de a folosi X-Sendfile, este important să înțelegem că aceasta nu este o funcție standard și este dezactivată implicit de majoritatea serverelor web. Serverele web diferite au implementări diferite, inclusiv formate diferite de antete X-Sendfile. Dacă este configurat greșit, utilizatorii pot descărca un fișier de 0 octet.
Folosirea X-Sendfile permite descărcarea fișierelor din directoare non-web (de exemplu /root/) chiar dacă fișierul este dezactivat sub protecția .htaccess.
Servere web diferite implementează antete HTTP diferite
Antet SENDFILE | Server WEB folosit | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirecționare | Nginx, Cherokee |
Dezavantajul folosirii X-SendFile este că pierzi controlul asupra mecanismului de transfer al fișierelor. De exemplu, dacă doriți să realizați anumite acțiuni după descărcarea unui fișier, cum ar fi permițând utilizatorului să descarce fișierul o singură dată, acest X-Sendfile nu va putea face acest lucru deoarece scriptul php din fundal nu știe dacă descărcarea este reușită.
2. Cum să folosești NGINX?
Nginx suportă această funcție implicit și nu necesită încărcarea unor module suplimentare. Doar că implementarea este puțin diferită, iar antetul HTTP care trebuie trimis este X-Accel-Redirect. În plus, trebuie să faci următoarele setări în fișierul de configurare
intern înseamnă că această cale poate fi accesată doar în Nginx și nu poate fi accesată direct de browser pentru a preveni descărcările neautorizate.
3. Cum să folosești programele PHP?
Dacă adaugi antetul X-Accel-Redirect, utilizatorul va descărca fișierul sub ruta /game. Controlul nostru de permisiuni pentru fișiere este implementat.
Introducere în documentația oficială:Autentificarea cu hyperlink este vizibilă.
|
Precedent:Dragoste, căsătorie și familie, prima jumătate a lunii + 18 iunieUrmător:CF este prima perspectivă asupra întregii rețele care se auto-țintește și se stabilizează timp de o lună
|