Кэширование Nginx

оч хорошая статья, боюсь потерять на неё ссылку
http://devacademy.ru/posts/razbiraemsya-v-http-proksi-nginx-balansirovke-nagruzki-buferizatsii-i-keshirovanii/
это перевод вот этой статьи
https://www.digitalocean.com/community/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching

Поиск вирусов на сайте

Стали часто обращаться в помощи почистить сайты\сервера от вирусов.

пишу заметку для себя, какие комманды в поиске подозрительных файлов применяю
в поисках подозрительных функций

egrep -Rl '\$GLOBALS.*\\x|function.*for.*strlen.*isset|isset.*eval' . >virus.txt

но странно эта команда не все находит. вот есть шелл в руках, на который она не реагирует в нём дофига

<? $GLOBALS['_164
;$GLOBALS[
;$GLOBALS[

в связи с этим
вот ещё у коллег в бложике спёр

find /path/with/sites/ -type f -iname "*" -exec grep -Him1 'eval(' {} \; >> shells.txt
find /path/with/sites/ -type f -iname "*" -exec grep -Him1 'GLOBALS' {} \; >> shells.txt

дальше ручками просматриваем файлы из virus.txt на предмет аномалий.

часто надо найти файлы что правились совсем недавно

find . -type f -printf '%TY-%Tm-%Td %TT %p\n' | sort -r > virus_time.txt

будет создан файл и отсортирован в обратном порядке

Кэширование nginx: Мониторинг

Оригинал статьи тут, себе копирую, чтоб не потерять.

Объявляем новый log_format в nginx.conf:

log_format rt_cache '$remote_addr - $upstream_cache_status [$time_local]  '
                    '"$request" $status $body_bytes_sent '
                    '"$http_referer" "$http_user_agent"';

в server разделе вашего vhost:

И замените

access_log   /var/log/nginx/example.com.access.log;

На вот такое:

access_log   /var/log/nginx/example.com.access.log rt_cache;

Или можно поступить как-то так.

access_log   /var/log/nginx/example.com.access.log;
access_log   /var/log/nginx/example.com.cache.log rt_cache;

обратите внимание, что в разных логах различаются имена файлов.

Анализируем логи:

HIT vs MISS vs etc

Можно посмотреть статистику из access.log:

awk '{print $3}' access.log  | sort | uniq -c | sort -r
Sample output:

    800 HIT
    779 -
    392 BYPASS
     19 EXPIRED
     14 MISS

Важно: тире (“-“) означает прочие коды return 403, return 444, и возможно всякие файлы, что не попали к нам в локейшин в котором действует кэш.

Посмотреть список уролов с MISS

awk '($3 ~ /MISS/)'  access.log | awk '{print $7}' | sort | uniq -c | sort -r

BYPASS Requests URLs

awk '($3 ~ /BYPASS/)'  access.log | awk '{print $7}' | sort | uniq -c | sort -r

MISS v/s BYPASS

MISS — Это промахнулись мимо кэша, возможно это первое обращение, после которого кэш создаётся.

BYPASS — это пропуск к бэкэнду минуя кэн nginx например для залогиненных пользователей.

md0 после сбоя не стартует

Запись будет дополнятся, но пока ключевое для себя вынесу в такой сумбур.

Уже 2 раза было, проблемы с питанием, рушится рейд, точнее выходит покурить один из дисков, тесты по диску проходят отлично но, диск назад не идёт в рейд под различными предлогами.
в статусе написано

State : active, degraded, Not Started

при добавлении диска в сислоге отражается вот это

md0: ADD_NEW_DISK not supported

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

помогает удалить этот диск из рейда, и заного собрать массив с -f флагом
пробуем собрать массив

mdadm --assemble --scan

смотрим что там и как

mdadm --detail /dev/md0

раз не пошло, тормозим его

mdadm --stop /dev/md0

и пробуем ещё раз

mdadm --assemble --force /dev/md0

смотрим что буквы U_UUUU появились

cat /proc/mdstat

если по началу было так

Personalities : [raid6] [raid5] [raid4]
md0 : inactive sdf1[9] sdg1[2] sdh1[3] sdc1[5] sdd1[4] sda1[8] sdb1[7] sde1[0]
      12697839538 blocks super 1.2

то стало так

# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active raid5 sde1[0] sdb1[7] sda1[8] sdd1[4] sdc1[5] sdh1[3] sdg1[2] sdf1[9]
      10255949312 blocks super 1.2 level 5, 512k chunk, algorithm 2 [8/7] [U_UUUUUU]
      [>....................]  recovery =  1.5% (22352004/1465135616) finish=1610.7min speed=14928K/sec

unused devices: <none>

Удалить большое число файлов из каталога

Так получилось, что место хранения файлов сессий было перенесено, и пару сотен миллионов файлов мило хранилось в одном каталоге, удалить ни каталог ни файлы не получалось классическими методами.
на хабре был по подсмотрен вот такой вот выход:

nice -n 19 ionice -c3 find /home/tmp/folder.ru/ -maxdepth 1 -type f -name sess* | xargs -n1 nice -n 19 ionice -c3 rm
Страница 2 из 3912345...102030...Последняя »