Doresc să limitez accesul la o singură conexiune pe IP.
Fragmentul de cod pe care îl folosesc de pe pagina oficială:
Setează zona de memorie partajată și numărul maxim permis de conexiuni pentru o anumită valoare a cheii.Când această limită este depășită, serverul va returna eroarea ca răspuns la o solicitare. De exemplu, directivele
limit_conn_zone $binary_remote_addr zone=adresa:10m;
Server {
locație /descărcare/ {
limit_conn addr 1;
}
permiteți o singură conexiune pentru o adresă IP la un moment dat.
Folosesc nginx în interiorul containerului docker, iar acesta este default.conf:
limit_conn_zone $binary_remote_addr zone=adresa:10m;
root /usr/share/nginx/html;
Server {
asculta 8080;
locație /descărcări/ {
limit_conn addr 1;
autoindex activat;
}
}
Acesta este linkul unde este explicat cum se testează dacă limitarea IP funcționează:
https://blog.actorsfit.com/a?ID=00700-9f36887c-5d4b-4f0e-baf5-725ff22f2e42
Comanda curl pe care am folosit-o:
curl -v http://192.168.0.13:8080/downloads/ http://192.168.0.13:8080/downloads/
Raspuns:
* Se încearcă 192.168.0.13:8080...
* TCP_NODELAY setat
* Conectat la 192.168.0.13 (192.168.0.13) portul 8080 (#0)
> GET /descărcări/ HTTP/1.1
> Gazdă: 192.168.0.13:8080
> User-Agent: curl/7.68.0
> Accept: */*
>
* Marcați pachetul ca nu acceptă mai multe utilizări
< HTTP/1.1 200 OK
< Server: nginx/1.21.4
< Data: Duminică, 28 noiembrie 2021 11:53:36 GMT
< Content-Type: text/html
< Transfer-Coding: fragmentat
< Conexiune: păstrați-vă în viață
<
<html>
<head><title>Indexul /descărcărilor/</title></head>
<corp>
<h1>Indexul /descărcărilor/</h1><hr><pre><a href="../">../</a>
<a href="text">text</a> 28-Nov-2021 10:51 2
</pre><hr></body>
</html>
* Conexiunea #0 la gazda 192.168.0.13 a rămas intactă
* Pachet găsit pentru gazda 192.168.0.13: 0x55e1cd185b50 [serial]
* Nu se poate multiplexa, chiar dacă am vrut!
* Reutilizarea conexiunii existente! (#0) cu gazda 192.168.0.13
* Conectat la 192.168.0.13 (192.168.0.13) portul 8080 (#0)
> GET /descărcări/ HTTP/1.1
> Gazdă: 192.168.0.13:8080
> User-Agent: curl/7.68.0
> Accept: */*
>
* Marcați pachetul ca nu acceptă mai multe utilizări
< HTTP/1.1 200 OK
< Server: nginx/1.21.4
< Data: Duminică, 28 noiembrie 2021 11:53:36 GMT
< Content-Type: text/html
< Transfer-Coding: fragmentat
< Conexiune: păstrați-vă în viață
<
<html>
<head><title>Indexul /descărcărilor/</title></head>
<corp>
<h1>Indexul /descărcărilor/</h1><hr><pre><a href="../">../</a>
<a href="text">text</a> 28-Nov-2021 10:51 2
</pre><hr></body>
</html>
* Conexiunea #0 la gazda 192.168.0.13 a rămas intactă
Jurnal Nginx:
192.168.0.3 - - [28/Nov/2021:11:53:36 +0000] „GET /descărcări/ HTTP/1.1” 200 276 „-” „curl/7.68.0” „-”
192.168.0.3 - - [28/Nov/2021:11:53:36 +0000] „GET /descărcări/ HTTP/1.1” 200 276 „-” „curl/7.68.0” „-”
Am încercat același lucru cu telnet și am obținut același rezultat, pot accesa serverul de mai multe ori de pe același IP.