W tym poście nie rozpiszę się zbytnio - wrzucam tylko config od którego zaczynam konfigurację nginx’a.
user www-data;
worker_processes 4;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
## zaakceptuj tak dużo połączeń jak to możliwe
multi_accept on;
## epoll jest preferowany na jajkach od 2.6
## http://www.kegel.com/c10k.html#nb.epoll
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
## opcje TCP
sendfile on;
tcp_nopush on;
tcp_nodelay on;
## maksymalny rozmiar zapytnia
client_max_body_size 10m;
## timeout'y
client_body_timeout 60;
client_header_timeout 60;
keepalive_timeout 10;
send_timeout 60;
## kompresja
gzip on;
gzip_static on;
gzip_vary on;
gzip_disable "msie6";
gzip_comp_level 1;
gzip_proxied any;
gzip_buffers 16 8k;
gzip_min_length 50;
gzip_types text/plain text/css application/json application/x-javascript application/javascript text/javascript application/atom+xml application/xml application/xml+rss text/xml image/x-icon text/x-js application/xhtml+xml;
## bezpieczeństwo
## security by obscurity - ukrywamy wersję nginx'a
server_tokens off;
ignore_invalid_headers on;
## resetuj zbyt długie połączenia - powinno pomóc na slowlorisa
reset_timedout_connection on;
## włączenie ochrony przed clickjackingiem - uruchamiam to per vhost
## https://developer.mozilla.org/en/The_X-FRAME-OPTIONS_response_header
#add_header X-Frame-Options SAMEORIGIN;
## potrzebne zeby zbudowac mape ponizej
map_hash_bucket_size 256;
## blacklist'a botów i referer'ów
include blacklist.conf;
##
# jeśli połączenie na HTTPS'a to ustawiamy zmienną by mogło być obsłużone
##
map $scheme $server_https {
default off;
https on;
}
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
No i jeszcze zawartość blacklist.conf - na początek wystarczy a można rozszerzyć pod siebie:
## blokowanie agentów
map $http_user_agent $bad_bot {
default 0;
libwww-perl 1;
~(?i)(httrack|htmlparser|libwww) 1;
}
## blokowanie refererów
map $http_referer $bad_referer {
default 0;
~(?i)(babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|webcam|zippo|casino|replica) 1;
}