|
|
Publicado en 7/11/2018 10:05:15
|
|
|

Los BBS o sitios web suelen pedir permiso solo para ver esta página o descargar este recurso; hace unos días visité el servidor nginx usando x-sendfile.
1. ¿Qué es X-Sendfile?
X-Sendfile es un mecanismo que retransmite las solicitudes de descarga de archivos desde la aplicación backend hacia el servidor web frontal para su procesamiento, lo que puede mejorar significativamente la eficiencia del servidor al eliminar la presión del programa back-end para leer y procesar el archivo para procesar el envío, especialmente al tratar con descargas de archivos de gran tamaño.
X-Sendfile se implementa mediante un encabezado HTTP específico: especificando la dirección de un archivo en el encabezado X-Sendfile para anunciarlo al servidor web frontal. Cuando el servidor web detecta este encabezado enviado por el backend, ignora otras salidas del backend y utiliza sus propios componentes (incluyendo optimizaciones como cabeceras de caché y reconexiones de puntos de interrupción) para enviar el archivo al usuario.
Sin embargo, antes de usar X-Sendfile, es importante entender que esta no es una función estándar y está desactivada por la mayoría de los servidores web por defecto. Diferentes servidores web tienen diferentes implementaciones, incluyendo distintos formatos de cabecera X-Sendfile. Si se configura mal, los usuarios pueden descargar un archivo de 0 bytes.
Usar X-Sendfile permitirá descargar archivos en directorios no web (por ejemplo, /root/) incluso si el archivo está deshabilitado bajo la protección .htaccess.
Diferentes servidores web implementan diferentes cabeceras HTTP
Cabecera SENDFILE | Servidor WEB utilizado | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirección | Nginx, Cherokee |
La desventaja de usar X-SendFile es que pierdes el control del mecanismo de transferencia de archivos. Por ejemplo, si quieres realizar ciertas acciones tras descargar un archivo, como permitir que el usuario lo descargue solo una vez, este archivo de envío X no podrá hacerlo porque el script php en segundo plano no sabe si la descarga es exitosa.
2. ¿Cómo usar NGINX?
Nginx soporta esta función por defecto y no requiere cargar módulos adicionales. Simplemente, la implementación es un poco diferente, y la cabecera HTTP que hay que enviar es X-Accel-Redirect. Además, necesitas configurar los siguientes ajustes en el archivo de configuración
interno significa que esta ruta solo puede ser accedida dentro de Nginx y no puede ser accedida directamente desde el navegador para evitar descargas no autorizadas.
3. ¿Cómo usar los programas PHP?
Si añades la cabecera X-Accel-Redirect, el usuario descargará el archivo bajo la ruta /game. Nuestro control de permisos de archivos está implementado.
Introducción a la documentación oficial:El inicio de sesión del hipervínculo es visible.
|
Anterior:Amor, matrimonio y familia, primera mitad del mes + 18 de junioPróximo:La FQ es la primera perspectiva de toda la red que se autodefine y estabiliza durante un mes
|