/
Pack Hosting Panel

Rate limit requests

Hoe kun je zorgen dat je applicatie niet bestookt wordt met requests van dezelfde bots / bezoekers.


Het komt erg vaak voor dat je applicatie bestookt wordt met requests van eenzelfde IP. Omdat dan je php-fpm processen snel op raken is er geen ruimte meer voor gewoon bezoek.

Door simpel weg het aantal PHP requests per ip te limiteren los je veel van deze problemen op. Je kunt met het hipex commando deze rate limiting geheel naar wens instellen.

Hoe werkt het

Bij rate limiting limiteer je het maximaal aantal requests per minuut dat van 1 IP af mag komen. Alleen veel pagina's hebben naast de initiele request ook nog een aantal ajax requests. De requests komen dus in een burst binnen.

Met het rate limit commando kun je per path prefix, volledig request path of regex instellen hoeveel requests er per ip per minuut maximaal mogen binnen komen en hoeveel er in burst.

De limitaties worden opgeslagen in de domain configuratie folder in deze bestanden.

  • ~/domains/<domain>/var/etc/rate-limit.nginx.conf
  • ~/domains/<domain>/var/etc/scope-http/rate-limit.nginx.conf

Limiteren met burst

Om bijvoorbeeld het aantal requests op PHP te limiteren naar 5 per minuut gebruik je dit commando:

hipex security:ratelimit 5

De bezoeker kan dan 1 request per 12 seconden uitvoeren welke in PHP uit komt. Voeg hier burst aan toe en de bezoeker mag 1 request per 12 seconden doen of 5 requests in 1 keer en dan 1 minuut geen requests meer.

hipex security:ratelimit 5 --burst=5

Specifieke paden

Wil je de requests op de admin login blokkeren naar 1 per minuut gebruik voeg je hier het pad aan toe:

hipex security:ratelimit 1 /<beheer>/admin/index/index

( moet hier natuurlijk vervangen worden voor jou specifieke admin url).

Of juist voor de skin & media zodat de bezoeker wel snel alle static content kan binnen halen

hipex security:ratelimit 1000 /media

Prefix, volledig pad en regex

Standaard worden de paden gezien als prefix. Je hebt ook de mogelijkheid om paden als een regex op te geven:

hipex security:ratelimit 1000 '/(media|skin)' --path-type=regex

Of een absoluut pad:

hipex security:ratelimit 1000 /checkout/cart/add --path-type=exact

Verwijderen

Als je wilt inzien welke rate limitaties actief zijn kun je het commando uitvoeren zonder argumenten.

hipex security:ratelimit

+-----------+-----------+-----------+-------+
| Path      | Path Type | Frequency | Burst |
+-----------+-----------+-----------+-------+
| php       | prefix    | 1r/m      | 20    |
| /somepath | prefix    | 1r/m      | 2     |
+-----------+-----------+-----------+-------+

Je kunt een regel verwijderen met de --remove option.

hipex security:ratelimit 2 /somepath --remove

Help

Uiteraard is ook de --help option geimplementeerd zodat je alle opties en mogelijkheden van het commando ook via de command line kunt bekijken:

hipex security:ratelimit --help