Dimka

Рейтинг
219
Регистрация
07.11.2000
Dram:
Конечно лучше, но я не смог нарыть даже подсети Хедзнера и OVH хотя бы...

Hetzner:

https://myip.ms/browse/ip_ranges/1/ownerID/45081/ownerID_A/1

OVH:

https://myip.ms/browse/ip_ranges/1/ownerID/7593/ownerID_A/1

Dram:
Вот нашел интересный вариант

chesser плохого не посоветует, но нужно учесть момент, что картинка из css может быть давно в кэше браузера (в принципе, как и css).

Если без кук -

для отдельного location (например mini_style.css?random или 1x1.gif?random) - писать в memcache текущий ip.

А для секции html проверять значение memcache на встроенном в nginx: lua или perl

---------- Добавлено 23.01.2017 в 19:22 ----------

Dram:
создать черный список - страны

может лучше найти список ip этих ДЦ?

map "$whitelist:$server_protocol:$cookie" $limit3 {
default "";
"0:HTTP/2.0:1" "";
"0:HTTP/1.1:1" "";
"0:HTTP/1.1:0" $binary_remote_addr;
}
limit_req_zone $limit3 zone=bot_cookie:10m rate=2r/m;

Убрал кавычки для "$binary_remote_addr" и default изменил на ""

И default стоит прописать всем map

---------- Добавлено 23.01.2017 в 00:22 ----------

Кстати, юзер грузит несколько файлов стразу (html, картинки, стили, иконка) - нужно ограничивать все эти правила отдельной секцией для html (исключить все остальное)

Мне кажется, что нет куки - пустая строка

"0:HTTP/1.1:"

Dram, если писать не в куки, можно попробовать решение: при обращении к css писать в memcache (текущий ip).

Dram, но, им можно существенно урезать лимиты.

Dram:
Я бы сюда еще добавил бы блокирование ботов, которые на запрашивают css и js, только пока не придумал как это реализовать в NGINX. Возможно ли это?

Поставить при запросе css и js - отдельную куку.

Обратите внимание, что css и js могут быть в кеше и не запрашиваться (у юзеров, которые были на сайте до введения этой куки). В этом случае: создать отдельный css и запрашивать его css?random_number

Осталось решить проблему первого просмотра: сначала грузитcя html, а потом css и js

Предложение: выводить подсказку "[Название текущей колонки]" при наведение мыши на одну из колонок в шапке таблицы.

Или хотябы:

Сейчас есть подсказка на каждой колонке "Редактировать условия фильтрации", добавить название текущей колонки, т.е.: "Редактировать условия фильтрации [Фраза]".

Из-за большого количества колонок, я уменьшил их ширину и не всегда помню какая и что означает.

Когда условий в фильтрации мало, нажимаю "Редактировать условия фильтрации" на колонке и смотрю какая добавлена (когда их много - новое условие НЕ добавляется и приходится просто увеличивать ширину колонки, чтобы вспомнить "что там").

Вообще да, Go быстр, в т.ч. и по времени компиляции.

Кстати, по этим тестам http://attractivechaos.github.io/plb/ на несложных регулярках вида

([a-zA-Z][a-zA-Z0-9]*)://([^ /]+)(/?[^ ]*)

Перл обходил все языки в списке. В т.ч. Си.

danforth:
Автор, перл уже давно проиграл. Он уже нигде не побеждает.
Аж стало интересно: вот пример программы на Go, которую написал примерно за 10 минут

Сейчас изучаю GO. Крайне приятный и быстрый язык. Особенно радуют рутины.

Но, в защиту Perl - Перл побеждает Go в регулярках. Вообще Перл быстро работает с регулярками и хешами (мапы в го). И код для работы с регулярками - лаконичный. Т.е. он до сих пор идеально подходит для парсинга текста.

Написал простейший парсер файла с логами (десять строк: разбор регуляркой строки лога и запись в хеш) на GO и решил посмотреть насколько будет быстрее компилируемый язык, чем интерпретатор Перл.

Насколько же было велико мое разочарование, когда оказалось, что Перл заметно быстрее (примерно на 40%). Сравнивал в одном потоке, разумеется. В GO использовал MustCompile (и пробовал вариант с MustCompilePOSIX). В итоге, конечно, переписал код на GO без регулярок - и обошел по скорости Перл. Но, для быстрого решения некоторых задач - Перл еще рано списывать.

Всего: 745