Как лучше защитить web сервер — Apache или Nginx ?

Допустим есть java webapp на Tomcat сервере.
Хочу поставить защиту от DoS, фильтр корректных http запросов, лимиты по подключениям с одного IP и др. способы защиты.

Что посоветуете в этом случае — Apache или Nginx?
  • Вопрос задан
  • 6736 просмотров
Пригласить эксперта
Ответы на вопрос 7
homm
@homm
Использовать Apache как средство защиты от высоких нагрузок — это как выделять деньги на борьбу с коррупцией.
Ответ написан
iandriyanov
@iandriyanov
Ставить Apache и Фронт Джинкса.

nGinx заюзать под:

http {
# даже обычные медленные клиенты, обычно дороги
reset_timedout_connection on;
client_header_timeout 15;
client_body_timeout 15;
send_timeout 5;
keepalive_timeout 30 15;

# введем две зоны ограничений.
# По открытым соединениям и по request rate
limit_req_zone $binary_remote_addr zone=qglob:16m rate=3r/s;
limit_zone cglob $binary_remote_addr 16m;

server {
listen 80;
server_name www.myhost.ru;

proxy_set_header Host $host;
# необходимо для работы proxy_store
proxy_buffering on;

# ограничим максимальное количество соединений с одного ip
# до 4х клиентов с одного ip по rfc2616
limit_conn cglob 32;

# Быстро отлавливаем “GET / “.
# Дописываем удобное имя файла.
location = / {
rewrite ^/$ /index.html last;
}

#Пост-рейт отдача статического index.html или загрузка с бэкенда.
location = /index.html {
internal;
limit_req zone=qglob burst=9 nodelay;
open_file_cache_errors off;
root /tmp/nginx/cache/;
error_page 404 = /cached$uri;
}


location /cached/ {
internal;
alias /tmp/nginx/cache/;
proxy_pass phpfarm;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path /tmp/nginx/tmp/;
}

#Жестоко зажатый на два запроса в секунду поиск.
location = /advanced_search_result.php {
limit_req zone=qulag burst=2;
proxy_pass phpfarm;
}

# И все остальное.
location / {
proxy_pass phpfarm;
}
}
}

Еще можно покурить в сторону sysctl и pf (ipfw)
Ответ написан
@yitzhakv
К прочим способам защиты можно отнести скрытие версии nginx и PHP.

server_tokens off; в nginx.conf
expose_php = Off в php.ini
Ответ написан
iandriyanov
@iandriyanov
А ОСь какая?
Ответ написан
@bondbig
Если я правильно понимаю, автор имеет в виду апачевский WAF — mod_security. Зашищаться им от DDoS'а не выйдет, это немного другая штука, а вот фильтр корректных http запросов запросто можно сделать. От легкого пионерского ддоса спасет nginx, просто в силу своей архитектуры, но никаких проверок на валидность-вредоносность запросов он провести не в состоянии.
Ответ написан
nginx + lua-nginx-module, месяц назад на хабре была статья на эту тему: habrahabr.ru/blogs/nginx/130861/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы