Ich verwende diese Syntax für meine Nginx-Konfigurationsdatei /etc/nginx/nginx.conf
, die lautet:
user www-data;
worker_processes 2;
pid /run/nginx.pid;
worker_rlimit_nofile 100000;
events {
worker_connections 2048;
multi_accept on;
}
http {
##
# Basic Settings
##
client_header_buffer_size 2k;
large_client_header_buffers 2 1k;
client_body_buffer_size 10M;
client_max_body_size 10M;
client_body_timeout 12;
client_header_timeout 12;
keepalive_timeout 15;
send_timeout 10;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=50r/s;
server {
limit_conn conn_limit_per_ip 10;
limit_req zone=req_limit_per_ip burst=10 nodelay;
}
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
Die Serverblöcke meiner Websites sind in Folgendem enthalten:include /etc/nginx/sites-enabled/*;
Wird der wie oben dargestellt definierte Server die Blöcke in mir http
ersetzen, damit der DDOS-Schutz wie erwartet funktioniert?server{}
sites-enabled/*
Antwort1
Tatsächlich gibt es einen wichtigen Unterschied zwischenDOSUndDDOSAngriffe. Das zusätzliche D in DDOS steht für verteilt.
Für einfacheDOSAngriffe, für die Ihr Setup verwendet werden kann. Allerdings hängt es wirklich von Ihrer Anwendung oder Website ab, wo der Unterschied zwischen einem zulässigen oder erwarteten Anwendungsfall und einem nicht zulässigen oder nicht erwarteten Anwendungsfall liegen kann. Es gibt kein allgemeines Rezept.
MildernDDOSgreift Ihr Setup anwird nicht helfen. Solche Angriffe werden von vielen verschiedenen IP-Adressen aus gestartet. Normalerweise müssen DDOS-Angriffe auf Netzwerkebene und mit einer sehr hohen Bandbreite abgewehrt werden.
Antwort2
Ich vermute, Sie sprechen vonngx_http_limit_conn_moduleUndngx_http_limit_req_module.
Syntax: limit_conn-Zonennummer;
Standard: —
Kontext: http, Server, Standort.
Diese Anweisungen werden genau dann von der vorherigen Konfigurationsebene übernommen, wenn auf der aktuellen Ebene keine limit_conn-Anweisungen definiert sind.
Sie müssen es also limit_conn
eine Ebene höher im http
Block platzieren, damit es in die server
Blöcke übernommen wird.
Syntax: limit_req zone=Name [burst=Nummer] [Knotenlay | Verzögerung=Nummer];
Standard: —
Kontext: http, Server, Standort.
Diese Anweisungen werden von der vorherigen Konfigurationsebene übernommen, wenn und nur wenn auf der aktuellen Ebene keine limit_req-Anweisungen definiert sind.
Dasselbe gilt für die limit_req
Platzierung eine Ebene höher im http
Block, damit es in den server
Block übernommen wird.