
Я хочу отдать необработанный файл, если на него делается хотлинк, но переписать URL-адрес, если кто-то посещает файл в своем браузере.
Я видел этот пример хотлинкинга несколько раз:
location /pictures/ {
valid_referers none blocked mywebsite.com *.mywebsite.com;
if ($invalid_referer) {
return 403;
}
}
НО как мне ссылаться на действительные рефереры? Я пытаюсь обслужить запрошенный необработанный файл, если на него ссылаются с другой страницы (горячая ссылка).
Если кто-то просматривает этот файл в браузере, я хочу добавить немного HTML (т. е. переписать на другой URL);
Какие переменные доступны помимо $invalid_referer
?
Я пробовал:
if( !$invalid_referer){
return 403; #allow hot-linking only;
}
И не вижу никаких упоминаний о других доступных переменных в документации.http://nginx.org/en/docs/http/ngx_http_referer_module.html
решение1
Вы можете проверить стоимость$invalid_referer
ИзДокументация:
Указывает значения полей заголовка запроса «Referer», которые приведут к установке встроенной переменной $invalid_referer в пустую строку. В противном случае переменная будет установлена в «1». Поиск совпадений нечувствителен к регистру.
if($invalid_referer = ""){
return 403; #allow hot-linking only;
}
Вы также можете сделать
if($invalid_referer != "1"){
return 403; #allow hot-linking only;
}