
Quero servir um arquivo bruto se ele estiver sendo vinculado, mas reescrever o URL se alguém estiver visitando o arquivo no navegador.
Já vi este exemplo de hotlinking algumas vezes:
location /pictures/ {
valid_referers none blocked mywebsite.com *.mywebsite.com;
if ($invalid_referer) {
return 403;
}
}
MAS, como posso me referir a referenciadores válidos? Estou tentando servir o arquivo bruto solicitado se ele estiver sendo vinculado a outra página (hot link).
Se alguém estiver visualizando esse arquivo em um navegador, quero adicionar algum HTML (ou seja, reescrever para outro URL);
Quais variáveis estão disponíveis além de $invalid_referer
?
Eu tentei:
if( !$invalid_referer){
return 403; #allow hot-linking only;
}
E não vejo nenhuma menção a outras variáveis disponíveis na documentação.http://nginx.org/en/docs/http/ngx_http_referer_module.html
Responder1
Você pode verificar o valor de$invalid_referer
DeDocumentação:
Especifica os valores do campo do cabeçalho da solicitação “Referer” que farão com que a variável $invalid_referer incorporada seja definida como uma string vazia. Caso contrário, a variável será definida como “1”. A pesquisa por uma correspondência não diferencia maiúsculas de minúsculas.
if($invalid_referer = ""){
return 403; #allow hot-linking only;
}
você também poderia fazer
if($invalid_referer != "1"){
return 403; #allow hot-linking only;
}