nginxでスパムリクエストをブロックする

nginxでスパムリクエストをブロックする

nginx のアクセス/エラー ログに次のようなスパム リクエストが多数あります。

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

これを次のようにブロックします:

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

ただし、リクエストが.json次のように終わる場合:

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

error.log に 404 エラーが出力され、同様のリクエスト エラーが記録されます。

これは次のルールによるものだと思います:

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

これには json が含まれており、上記のルールを上書きします。ルールの順序を変更しようとしましたが、それでも 444 ではなく 404 が返されます。

json でリクエストを適切にブロックするにはどうすればよいでしょうか? ヒントがあれば教えてください。

関連情報