Много запросов типа referrer в nginx

Блокировка запросов типа referrer в nginx.

Случилась такая ситуация, что нагрузка на nginx резко возросла, cpu сервера стал загружен на 100%. Соответственно, сайт перестал работать корректно. В логе было очень много запросов типа referrer:

2023/12/22 18:42:55 [error] 5299#5299: *5765287617 upstream prematurely closed connection while reading response header from upstream, client: 217.106.239.117, server: hostname.com, request: "GET /wrapper.php?method=container&shopId=1371 HTTP/2.0", upstream: "https://10.1.1.11:444/wrapper.php?method=container&shopId=1371", host: "hostname.com", referrer: "https://referrer-domain.com/"

В nginx был добавлен следующий блок, который решил проблему:

map $http_referer $block_referrer {
    default 0;
    "https://referrer-domain.com/" 1;
}

server {
       server_name;
       listen  80;

if ($block_referrer) {
        return 403;
    }
}

Файл с map можно вынести отдельно, например в /etc/nginx/block_referrers.map.


Есть вариант добавить такой блок, чтобы блокировать по переменным в запросе:

location ~ ^/wrapper\.php {
        if ($arg_shopId = 1371) {
            return 403;
        }

Но в моём случае этот вариант отработал некорректно и похоже что блокировка пошла на вес запросы к файлу wrapper.php.

Добавить комментарий