При использовании модуля connlimit в iptables:
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j REJECTна сайте грузится только часть рисунков.
Тоже самое если настроить nginx на ограничение одновременных подключений (nginx стоит перед апач).
KeepAlive в httpd.conf отключен.
Подскажите, с чем может бы вызвана такая работа веб-серверов? Как можно ее решить?
> При использовании модуля connlimit в iptables:
> Тоже самое если настроить nginx на ограничение одновременных подключений
> Подскажите, с чем может бы вызвана такая работа веб-серверов? Как можно ее
> решить?Предлагаю "решить работу веб-сервера" не использованием меодуля connlimit в iptables и не ограничиванием одновременных подключений в nginx.
> При использовании модуля connlimit в iptables:
> iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 5
> -j REJECT
> на сайте грузится только часть рисунков.
> Тоже самое если настроить nginx на ограничение одновременных подключений (nginx стоит перед
> апач).
> KeepAlive в httpd.conf отключен.
> Подскажите, с чем может бы вызвана такая работа веб-серверов?Вызвана - Вашими настройками.
>Как можно ее решить?
Включить логику, изменить настройки.
-------------
....
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 8080 -m connlimit --connlimit-above 20 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth0 -p tcp -m tcp --dport 8080 --tcp-flags FIN,SYN,RST,ACK SYN -m hashlimit --hashlimit-above 1/sec --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name dport8080 -j DROP
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -m connlimit --connlimit-above 30 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
-A INPUT -i eth0 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -m hashlimit --hashlimit-above 2/sec --hashlimit-burst 10 --hashlimit-mode srcip --hashlimit-name dport8080 -j DROP
....замечаний нет.
>[оверквотинг удален]
> -A INPUT -i eth0 -p tcp -m tcp --dport 8080 --tcp-flags FIN,SYN,RST,ACK
> SYN -m hashlimit --hashlimit-above 1/sec --hashlimit-burst 10 --hashlimit-mode srcip
> --hashlimit-name dport8080 -j DROP
> -A INPUT -i eth0 -p tcp -m tcp --dport 80 -m connlimit
> --connlimit-above 30 --connlimit-mask 32 -j REJECT --reject-with icmp-port-unreachable
> -A INPUT -i eth0 -p tcp -m tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK
> SYN -m hashlimit --hashlimit-above 2/sec --hashlimit-burst 10 --hashlimit-mode srcip
> --hashlimit-name dport8080 -j DROP
> ....
> замечаний нет.Спасибо. А в каких случаях тогда необходимо conn_limit для nginx? Если с коробки установка данной опции привод к вот такому нехорошему последствию?
> Если с коробки установка данной опции привод к вот такому нехорошему последствию?
"Выстрелить в ногу" можно еще кучей других способов.
> Спасибо. А в каких случаях тогда необходимо conn_limit для nginx?Ограничить, к примеру, число скачиваний файла.
Общее правило: пока не знаешь, зачем оно нужно и не имеешь представления, как оно работает - трогать этот рычажок не надо.
> Если с коробки установка данной опции привод к вот такому нехорошему последствию?
Не совсем ясен смысл фразы "с коробки".
>> Спасибо. А в каких случаях тогда необходимо conn_limit для nginx?
> Ограничить, к примеру, число скачиваний файла.Файрволл ограничивает TCP-соединения, а в веб-сервере настройка применяется на разных уровнях - на уровне всего веб-сервера, на уровне отдельного веб-сайта, а в nginx также можно ограничивать на уровне location, что позволяет ограничивать по еще более точным условиям.
В продолжение обсуждения...На каком уровне лучше защищаться от простых ab, для начала (ApacheBenchmark).
Добавил правило в файрвол на 5/sec (таймаут 10сек) - начали появляться IP Google. Думаю это хорошим ничем не закончится... с поисковиком не хочется шутить...
Сколько в лимит на практике ставить необходимо, или лучше применять другие решения ?