Intentando bloquear solicitudes de spam en nginx

Intentando bloquear solicitudes de spam en nginx

Tengo numerosas solicitudes de spam en registros de error/acceso de nginx como:

/bcaashop/collections/new-era-new-era-indiana-pacers-nba-940-a-frame-snapback-black

que estoy bloqueando de esta manera:

if ($query_string ~ "\b(bca*.shop|nike|adidas)\b") { set $block_spam 1; } if ($block_spam = 1) { return 444; }

Pero si la solicitud termina en .json, por ejemplo:

/bcaashop/collections/new-era-new-era-indiana-pacers-nba-940-a-frame-snapback-black.json

Dará un error 404 en error.log, llenándolo con estos errores de solicitudes similares.

Sospecho que esto se debe a la siguiente regla:

location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|ttf|json|otf)$ { add_header Cache-Control "public"; expires 7d; }

que contiene json y anula la regla anterior. Intenté cambiar el orden de las reglas, pero sigo obteniendo 404 en lugar de 444.

¿Cómo bloquear las solicitudes con json correctamente? Se agradece cualquier consejo.

información relacionada