- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
По нужным мне критериям я собираю в таблицу айпи ботов, теперь хочу блокировать тех ботов которых находит такой запрос
но проблема в том, что кодер сделавший это решение - решил записывать IP в базу в десятичном формате.
В результате я по запросу выше получаю вот что
2959342749
3275804920
1381037115
775271378
3118050064
3642140770
1307169886
3119219212
3279977642
подскажите плиз как имея эти данные добавить в конфиг Nginx подключаемый файл, куда бы добавлялись эти IP в понятном для Nginx формате?
Я так понимаю нужно в конфиг добавить например
в котором уже и будут перечислены IP, например так
Теперь вопрос - что нужно написать в bash скрипте чтобы все это реализовать?
Если средствами PHP, то http://php.net/manual/ru/function.long2ip.php
Или средствами MySQL INET_NTOA().
Ну и bash скрипт примерно такой:
jkm, спаисбо большое! А я тут подумал... а нужно ли делать релоад Nginx после каждой новой записи ?
Можно так?
query="SELECT CONCAT('deny ', INET_NTOA(ip_start), ';') FROM \`xyfq1_blacklist_items\` WHERE \`c\` > 20 ORDER BY \`c\` DESC "
mysql --skip-column-names --user="root" --password="Пароль" --database="База2" --execute="$query" > /etc/nginx/sites-conf/blockip.conf;
var='/etc/init.d/nginx reload';
но мне выдает
но мне выдает
В Window конец строки это последовательность из двух символов \r\n, а в Unix конец строки только один символ \n.
Записал в одну строку, ошибок нет, но и релоад Nginx не работает. Может я его не так записал?
Просто удалить \r
jkm, спасибо большое за помощь. Опять разнес по разным строкам, сделал ваш запрос.
Ошибки пропали - но и релоад Nginx не работает. Я его как-то не так прописал?
P.S. посмотрел файл - ваш запрос объединил две последние строки..... Ну да, я это уже догнал попробовать...
var='/etc/init.d/nginx reload';
Там нужно не кавычки, а обратные апострофы
все разобрался - там вообще не нужно var
прописал так
и все заработало!!!
Спасибо!
А можно еще вопрос?
Я попробовал добавить еще запросы, но запрос query2, пишет в файл blockip.conf поверх инфы запроса query
Как правильно объединить запросы?
#!/bin/bash
query="SELECT CONCAT('deny ', INET_NTOA(ip_start), ';') FROM \`blacklist_items\` WHERE \`c\` > 20 ORDER BY \`c\` DESC ";
query2="SELECT CONCAT('deny ', INET_NTOA(ip_start), ';') FROM \`blacklist_items\` WHERE \`a\` > 30 ORDER BY \`a\` DESC ";
mysql --skip-column-names --user="root" --password="PASSWORD" --database="NAME" --execute="$query" > /etc/nginx/sites-conf/blockip.conf;
mysql --skip-column-names --user="root" --password="PASSWORD" --database="NAME" --execute="$query2" > /etc/nginx/sites-conf/blockip.conf;
/etc/init.d/nginx reload