|
|
Publicado em 07/11/2018 10:05:15
|
|
|

BBS ou sites geralmente têm permissão apenas para você ter permissão para ver esta página ou baixar este recurso. Alguns dias atrás visitei o servidor nginx usando o x-sendfile.
1. O que é X-Sendfile?
X-Sendfile é um mecanismo que retransmite solicitações de download de arquivos do aplicativo backend para o servidor web front-end para processamento, o que pode melhorar significativamente a eficiência do servidor ao eliminar a pressão do programa back-end para ler e processar o arquivo para processar o envio, especialmente ao lidar com downloads de arquivos grandes.
X-Sendfile é implementado por meio de um cabeçalho HTTP específico: especificando o endereço de um arquivo no cabeçalho X-Sendfile para anunciar ao servidor web front-end. Quando o servidor web detecta esse cabeçalho enviado pelo backend, ele ignora outras saídas do backend e usa seus próprios componentes (incluindo otimizações como cabeçalhos de cache e reconexões de breakpoint) para enviar o arquivo ao usuário.
No entanto, antes de usar o X-Sendfile, é importante entender que isso não é um recurso padrão e é desativado pela maioria dos servidores web por padrão. Diferentes servidores web têm implementações distintas, incluindo diferentes formatos de cabeçalho X-Sendfile. Se configurado incorretamente, os usuários podem baixar um arquivo de 0 byte.
Usar o X-Sendfile permitirá baixar arquivos em diretórios que não sejam web (por exemplo, /root/) mesmo que o arquivo esteja desativado sob a proteção .htaccess.
Diferentes servidores web implementam cabeçalhos HTTP diferentes
Cabeçalho SENDFILE | Servidor WEB utilizado | | X-Sendfile | Apache, Lighttpd v1.5, Cherokee | | X-LIGHTTPD-send-file | Lighttpd v1.4 | | X-Accel-Redirecionar | Nginx, Cherokee |
A desvantagem de usar o X-SendFile é que você perde o controle do mecanismo de transferência de arquivos. Por exemplo, se você quiser realizar certas ações após baixar um arquivo, como permitir que o usuário baixe o arquivo apenas uma vez, esse X-Sendfile não poderá fazer isso porque o script php em segundo plano não sabe se o download foi bem-sucedido.
2. Como usar o NGINX?
O Nginx suporta esse recurso por padrão e não exige o carregamento de módulos adicionais. É só que a implementação é um pouco diferente, e o cabeçalho HTTP que precisa ser enviado é X-Accel-Redirect. Além disso, você precisa fazer as seguintes configurações no arquivo de configuração
interno significa que esse caminho só pode ser acessado dentro do Nginx e não pode ser acessado diretamente pelo navegador para evitar downloads não autorizados.
3. Como usar programas PHP?
Se você adicionar o cabeçalho X-Accel-Redirect, o usuário baixará o arquivo no caminho /game. Nosso controle de permissão de arquivos está implementado.
Introdução da documentação oficial:O login do hiperlink está visível.
|
Anterior:Amor, casamento e família, primeira metade do mês + 18 de junhoPróximo:A CF é a primeira perspectiva sobre toda a rede a se autodirecionar e estabilizar por um mês
|