Estou tentando implementar a proteção de hotlinking de download.
eu tenho esse código
location /download/ {
valid_referers blocked server_names *.example.com;
if ($invalid_referer) {
return 403;
}
Funcionando bem, isso permite especificar o domínio e bloquear o que não estiver em valid_referers, qual é o problema? Eu quero implementar um IP especificado com permissão para usar não referenciador e bloqueá-lo.
Isso é o que o log mostra.
1.2.3.4 - - - "GET file.doc HTTP/2.0" 200 13050 "-" "-"
Eu quero apenas 1.2.3.4 aceitar nenhum referenciador.
Para prevenção de hotlinking, é suficiente permitir strings de referência vazias (downloads diretos). Portanto, sua configuração pode ficar assim:
Os navegadores sempre adicionam o cabeçalho Referer às solicitações de imagem quando carregam imagens incorporadas nas páginas da web.
Se você realmente deseja bloquear downloads diretos de imagens, precisa usar algo assim no
http
nível de configuração do nginx:E depois em
server
bloco:Aqui, o
geo
módulo é usado para mapear o endereço IP para um valor de variável eset
é usado para combinar$invalid_referer
e$blocked
em uma única variável, que é testada naif
instrução.Eu mesmo não testei essa configuração exata, mas o princípio deve funcionar.