
Любой, кто запускает сервер NGINX и смотрит на него access.log
неделю спустя, обнаружит множество попыток взлома URL. Каждый день, в любое время.
Так что, если я должен был отклонить любые и все параметры URL. Что, если каждая строка запроса была бы замаскирована NGINX, rewrite
который не смог бы сопоставить ничего, что не определено как rewrite
естественно возвращающее 404 Not Found?
Или серия переписываний, расположенных в порядке, который всегда присутствует в этом блоке локаций?
location / {
rewrite "^/api/v1/users/?$" /api/v1/Users.php last;
rewrite "^/api/v1/users/(all|active|inactive)?$" /api/v1/Users.php?status=$1 last;
rewrite "^/api/v1/users/(\d+)/?$" /api/v1/Users.php?userId=$1 last;
}
# URL Match examples...
http://localhost/api/v1/users
http://localhost/api/v1/users/
http://localhost/api/v1/users/all
http://localhost/api/v1/users/active
http://localhost/api/v1/users/inactive
http://localhost/api/v1/users/2001
http://localhost/api/v1/users/2002
http://localhost/api/v1/users/2003
Есть ли способ заставить NGINX игнорировать параметры URL? Не стесняйтесь, дайте мне знать, если это наивный вопрос. Возможно, я задаю неправильный вопрос.
решение1
Лучше использовать return
вместо rewrite
because«директива перезаписи может возвращать только код 301 или 302». Для этого создайте location
с регулярным выражением, чтобы перехватить определенный URI запроса.
И если вы просто хотите отказаться от всех этих запросов, вернитеhttp-статус 444.
Пример:
server {
# ...
location ~* ^/api/v1/users/.*$ {
return 444;
}
}