
Quiero entregar un archivo sin formato si se está vinculando, pero reescribir la URL si alguien visita el archivo en su navegador.
He visto este ejemplo de hotlinking varias veces:
location /pictures/ {
valid_referers none blocked mywebsite.com *.mywebsite.com;
if ($invalid_referer) {
return 403;
}
}
PERO, ¿cómo puedo referirme a referentes válidos? Estoy intentando entregar el archivo sin formato solicitado si está vinculado desde otra página (enlace activo).
Si alguien está viendo ese archivo en un navegador, quiero agregar algo de HTML (es decir, reescribirlo en otra URL);
¿Qué variables están disponibles aparte de $invalid_referer
?
He intentado:
if( !$invalid_referer){
return 403; #allow hot-linking only;
}
Y no veo ninguna mención de otras variables disponibles en la documentación.http://nginx.org/en/docs/http/ngx_http_referer_module.html
Respuesta1
Puedes comprobar el valor de$referidor_inválido
Desde elDocumentación:
Especifica los valores del campo del encabezado de solicitud "Referer" que harán que la variable incrustada $invalid_referer se establezca en una cadena vacía. De lo contrario, la variable se establecerá en "1". La búsqueda de una coincidencia no distingue entre mayúsculas y minúsculas.
if($invalid_referer = ""){
return 403; #allow hot-linking only;
}
tu también podrías hacer
if($invalid_referer != "1"){
return 403; #allow hot-linking only;
}