Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 10873|Respuesta: 0

[Web] Controla el acceso a archivos usando el mecanismo X-Sendfile de Nginx (versión php)

[Copiar enlace]
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-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirecciónNginx, 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 junio
Próximo:La FQ es la primera perspectiva de toda la red que se autodefine y estabiliza durante un mes
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com