Задать вопрос
Cheizer
@Cheizer

Как в конфиге NGINX запретить напрямую доступ к файлу кроме запросов с определенного домена?

Есть сайт site1.com, на нем в папке files лежит файл file.tpl, есть еще и второй сайт site2.com, на котором я вывожу содержимое файла site1.com/files/file.tpl.

Как на первом сайте в конфиге NGINX запретить обращаться напрямую к файлу site1.com/files/file.tpl, но при этом разрешить обращаться к этому файлу с домена site2.com?

Пробовал так:

location ~* ^.+\.(?!html|php)[^.]+$ {
   if ($http_referer !~* (site2\.com)) {
       return 403;
    }
}

Закрывает обращение к файлу напрямую, но и закрывает от второго сайта, проверка не работает. Пробовал и другие варианты, ничего не работает.
  • Вопрос задан
  • 395 просмотров
Подписаться 1 Сложный Комментировать
Решения вопроса 1
@Kypidon4ik
Фрилансер, Wordpress developer
Для запрета напрямую доступа к файлу кроме запросов с определенного домена вам необходимо использовать директиву valid_referers в блоке location.

Вот пример конфигурации:

nginx
server {
    listen 80;
    server_name example.com;

    location /path/to/file {
        valid_referers none blocked example.com;
        if ($invalid_referer) {
            return 403;
        }
        
        # Дополнительная конфигурация для доступа к файлу
    }

    # Другая конфигурация сервера
}


В данном примере, example.com является разрешенным доменом, с которого разрешены запросы к файлу по указанному пути /path/to/file. Если запрос идет с другого домена или напрямую, то сервер возвращает код состояния 403 "Forbidden".

Обратите внимание на необходимость добавления модуля ngx_http_referer_module при сборке NGINX, так как эта директива зависит от него.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
YCLIENTS Москва
от 350 000 до 400 000 ₽
Viletech Москва
от 70 000 до 120 000 ₽
Wanted. Санкт-Петербург
До 200 000 ₽