#nginx
#nginx
Вопрос:
Я некоторое время искал, но не смог найти ничего, что соответствовало бы моим потребностям. Мне не нужна защита от горячих ссылок, как бы мне ни хотелось запретить людям напрямую обращаться к моим файлам. Допустим:
Мои website.com
запросы website.com/assets/custom.js
, это сработало бы, но я бы хотел, чтобы посетители, которые напрямую посещают этот файл, получали 403 status code
или что-то в этом роде. Я действительно понятия не имею, возможно ли это, и у меня нет никаких логических шагов в голове..
С уважением!
Комментарии:
1. Покажите вашу конфигурацию nginx (часть
server { server_name website.com ...}
)2. @mr_tron это очень, очень просто , конфигурация по умолчанию, это статический поддомен, поэтому в нем есть
root
иserver_name
!3. Я не совсем понимаю, чего вы хотите. У вас есть некоторый статический файл без динамического генерирующего содержимого (например:
index.html, main.css and logo.png
) и вы хотите, чтобы люди могли загружать файлы,main.css
иlogo.png
только если они открыты index.html в браузере и в этом файле попробуйте получитьmain.css
иlogo.png
?4. Да, я хочу, чтобы они могли видеть файл «logo.png» через
index.html
, но не путем прямого доступаstatic/logo.png
Ответ №1:
Вы можете использовать модуль nginx refererer:http://nginx.org/en/docs/http/ngx_http_referer_module.html. Что-то вроде этого:
server {
listen 80;
server_name website.com;
root /var/www/website.com/html ;
location /assets/ {
valid_referers website.com/ website.com/index.html website.com/some_other_good_page.html ;
if ($invalid_referer) {
deny all;
}
}
}
Эта конфигурация защищает assets
каталог. Но помните, что это не гарантировано и работает только для браузера — любое тело может эмулировать действительный запрос с помощью curl или telnet. Для истинной безопасности вам необходимо использовать динамические сгенерированные страницы с динамическими сгенерированными ссылками.
Вам не нужно создавать переменную $invalid_referer, поскольку она устанавливается модулем nginx.
Комментарии:
1. Я ничего не знаю о nginx, но разве вам не нужно где-то определять переменную $invalid_referer?
2. @MichaelRogers это устанавливается модулем refererer
3. это хорошее решение, но я думаю, что что-то могло измениться. Вместо
deny all;
которого выдается ошибка, я использовалreturn 403;
, и это работает.
Ответ №2:
Если ваши экземпляры для разработки на базе nginx отображаются в результатах поиска Google, есть быстрый и простой способ запретить поисковым системам обходить ваш сайт. Добавьте следующую строку в блок location вашего файла конфигурации virtualhost для блока, который вы хотите предотвратить обходом.
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Ответ №3:
Вы можете просто запретить доступ к любой папке или файлу, просто поместив эти строки рядом с названием ваших папок
location ~ /(no_access_folder|folder_2)
{
deny all;
return 403;
}
Комментарии:
1. Но это также ограничивает запрос, выполняемый веб-приложением.
2. Есть ли какой-либо способ, с помощью которого я могу воспроизводить видео на веб-сайте, но также ограничить прямой доступ к ним?
3. @vivekascoder В вопросе задается вопрос о предотвращении прямого доступа. Таким образом, это заблокирует прямой доступ к файлам, но вместо этого разработчик может получить доступ и направить запрос с помощью php и htaccess.
4. @vivekascoder да, вы можете сделать это с помощью PHP или Node и т.д. Вы можете перенаправить запрос и отправить пользовательский ответ с помощью php, содержащий ваше видео в виде фрагмента или навалом