Heim > Artikel > Betrieb und Instandhaltung > So verhindern Sie DDoS-Angriffe in Nginx
Die Verteidigung gegen DDOS ist ein systematisches Projekt. Die Verteidigungskosten sind hoch und es gibt viele Engpässe. Das Merkmal von DDOS ist, dass es verteilt ist und auf Bandbreiten- und Dienstangriffe abzielt, d . Für Anwendungsangriffe der Schicht sieben können wir noch einige Konfigurationen vornehmen, um uns dagegen zu verteidigen.
Zum Beispiel ist das Frontend Nginx, das zur Verteidigung hauptsächlich die Module http_limit_conn und http_limit_req von nginx verwendet. ngx_http_limit_conn_module kann die Anzahl der Verbindungen einer einzelnen IP begrenzen. Durch die Begrenzung der Anzahl der Verbindungen und Anforderungen können CC-Angriffe relativ effektiv abgewehrt werden.
Das Folgende ist die Konfigurationsmethode:
Begrenzen Sie die Anzahl der Anfragen pro Sekunde
Das Modul ngx_http_limit_req_module verwendet das Leaky Bucket-Prinzip zur Begrenzung der Zeiteinheit. Sobald die Anzahl der Anfragen pro Zeiteinheit das Limit überschreitet, wird ein 503-Fehler zurückgegeben. Die Konfiguration muss an zwei Stellen festgelegt werden:
Definieren Sie Triggerbedingungen im http-Abschnitt von nginx.conf. Es können mehrere Bedingungen vorhanden sein.
Definieren Sie an Ort und Stelle die Aktionen, die von nginx ausgeführt werden sollen, wenn die Triggerbedingungen vorliegen erfüllt
Zum Beispiel:
http { limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; //触发条件,所有访问ip 限制每秒10个请求 ... server { ... location ~ \.php$ { limit_req zone=one burst=5 nodelay; //执行的动作,通过zone名字对应 } } }
Parameterbeschreibung:
$binary_remote_addr 二进制远程地址 zone=one:10m 定义zone名字叫one,并为这个zone分配10M内存,用来存储会话(二进制远程地址),1m内存可以保存16000会话 rate=10r/s; 限制频率为每秒10个请求 burst=5 允许超过频率限制的请求数不多于5个,假设1、2、3、4秒请求为每秒9个,那么第5秒内请求15个是允许的,反之,如果第一秒内请求15个,会将5个请求放到第二秒,第二秒内超过10的请求直接503,类似多秒内平均速率限制。 nodelay 超过的请求不被延迟处理,设置后15个请求在1秒内处理。
Begrenzen Sie die Anzahl der IP-Verbindungen
Die Konfigurationsmethode und die Parameter von ngx_http_limit_conn_module sind die gleichen wie das Modul http_limit_req ist sehr ähnlich, mit weniger Parametern und viel einfacher
http { limit_conn_zone $binary_remote_addr zone=addr:10m; //触发条件 ... server { ... location /download/ { limit_conn addr 1; // 限制同一时间内1个连接,超出的连接返回503 } } }
Weitere technische Artikel zu Nginx finden Sie im Nginx-Tutorial Kolumne zum Lernen!
Das obige ist der detaillierte Inhalt vonSo verhindern Sie DDoS-Angriffe in Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!