|
|
Pubblicato su 07/11/2018 10:05:15
|
|
|

BBS o siti web spesso hanno solo il permesso di vedere questa pagina o scaricare questa risorsa; qualche giorno fa ho visitato il server nginx come implementare questo controllo file, usando x-sendfile.
1. Cos'è X-Sendfile?
X-Sendfile è un meccanismo che riporta le richieste di download di file dall'applicazione backend al server web front-end per l'elaborazione, il che può migliorare significativamente l'efficienza del server rimuovendo la pressione del programma back-end per leggere e processare il file per elaborare l'invio, specialmente quando si tratta di download di file di grandi dimensioni.
X-Sendfile è implementato tramite un'intestazione HTTP specifica: specifica l'indirizzo di un file nell'intestazione X-Sendfile da pubblicizzare al server web front-end. Quando il server web rileva questa intestazione inviata dal backend, ignora altri output dal backend e utilizza i propri componenti (inclusi ottimizzazioni come le intestazioni della cache e le riconnessioni dei breakpoint) per inviare il file all'utente.
Tuttavia, prima di usare X-Sendfile, è importante capire che questa non è una funzione standard ed è disabilitata dalla maggior parte dei server web di default. Diversi server web hanno implementazioni differenti, inclusi diversi formati di header X-Sendfile. Se configurati male, gli utenti possono scaricare un file da 0 byte.
L'uso di X-Sendfile permetterà di scaricare file in directory non web (ad esempio /root/) anche se il file è disabilitato sotto la protezione .htaccess.
Server web diversi implementano header HTTP differenti
Intestazione SENDFILE | Server WEB utilizzato | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirect | Nginx, Cherokee |
Lo svantaggio di usare X-SendFile è che perdi il controllo del meccanismo di trasferimento dei file. Ad esempio, se vuoi eseguire certe azioni dopo aver scaricato un file, come permettere all'utente di scaricare il file solo una volta, questo X-Sendfile non potrà farlo perché lo script php in background non sa se il download è riuscito.
2. Come usare NGINX?
Nginx supporta questa funzione di default e non richiede il caricamento di moduli aggiuntivi. È solo che l'implementazione è un po' diversa, e l'intestazione HTTP da inviare è X-Accel-Redirect. Inoltre, devi impostare le seguenti impostazioni nel file di configurazione
interno significa che questo percorso può essere accessibile solo all'interno di Nginx e non può essere accessibile direttamente dal browser per prevenire download non autorizzati.
3. Come utilizzare i programmi PHP?
Se aggiungi l'intestazione X-Accel-Redirect, l'utente scaricherà il file sotto il percorso /game. Il nostro controllo dei permessi file è implementato.
Introduzione alla documentazione ufficiale:Il login del link ipertestuale è visibile.
|
Precedente:Amore, matrimonio e famiglia, prima metà del mese + 18 giugnoProssimo:La CF è la prima prospettiva sull'intera rete a mirare e stabilizzarsi per un mese
|