Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 10873|Resposta: 0

[Web] Controle o acesso a arquivos usando o mecanismo X-Sendfile da Nginx (versão php)

[Copiar link]
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-SendfileApache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-fileLighttpd v1.4
X-Accel-RedirecionarNginx, 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 junho
Próximo:A CF é a primeira perspectiva sobre toda a rede a se autodirecionar e estabilizar por um mês
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com