• Какой DNS сервер и бэкенд использовать для обновления 20 млн записей ежедневно?

    @xtreme
    Не сочтите за назойливость - какова конечная цель данного "гоняния"? Возможно есть другой способ подойти к проблеме.
  • Как настроить nginx для dev?

    @xtreme
    copal:
    nginx.org/ru/docs/http/ngx_http_log_module.html#lo... - здесь указано, что контекст для log_format - http, таким образом log_format надо прописывать в секции http{}. Если посмотрите nginx.conf - там по-умолчанию уже определен один логформат под именем main. Если не заботиться о четкой иерархии файлов конфигов - тогда строку из пункта 1 можно просто вписать рядом. Таким образом мы опишем формат вывода с именем upstreamlog.

    Ну а потом останется только в виртуальном хосте, который описывает ваш проект, в качестве формата вывода лога вписать этот upstreamlog. См. пункт 2. Это всего лишь дописывание имени логформата к пути до access_log.

    Кстати, logformat, который я привел - это всего лишь пример. Туда можно вписывать любые переменные, которые позволяет обрабатывать nginx... включая значение куки и т.д.
  • Это filezilla, что тут надо делать?

    @xtreme
    Ответ: 530 Login incorrect.
    Здесь явно написано, что ваш сервер так не думает. А он врать не умеет.

    Хотя есть еще вариант кривой настройки vsftpd, но в этом случае надо смотреть его лог-файл.
  • Как настроить nginx для dev?

    @xtreme
    А.... я понял :) Вызовите ccze с параметром -A
    tail logs/access_log | ccze -A
  • Как настроить nginx для dev?

    @xtreme
    65536: Непонятно. У меня он ничего не стирает. ccze всего-лишь окрашивает текст, который ему скармливают.
    У меня есть только соображения, что возможно вы имели ввиду, что tail без -f отрабатывает и потом, допустим, появляется mc? В таком случае, либо надо использовать сабшелл в mc (просто Ctrl+O нажать :) ), либо вообще не запускать mc.
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    Александр Попов:
    4. Если все-таки вести капчу - понизится ваш рейтинг у почтовых систем - т.е. появится бОльшая вероятность влететь в "Спам" автоматически.
    5. Обычно на ящик, указанный в From:

    P.S. Если юзер задает вопрос в веб-форме, где пишет свой почтовый ящик - будет не лишним предупредить, что ответ осуществляется с помощью email и если он хочет получить ответ на свой вопрос, то ему надо указать свой почтовый ящик. Либо сделать обратную связь не на основе почты, а, например, в виде чата.
  • Как брать обновленные данные из базы?

    @xtreme
    Не вижу препятствий, чтобы и в сессию пользователя можно было параллельно пихнуть нужное значение.
    1. Меняем джаваскриптом нужный параметр в браузере у пользователя, чтобы смена цвета отобразилась сразу.
    2. Пихаем в сессию нужный параметр.
    3. При подтверждении пользователем - сохраняем в профиле пользователя в БД.

    Просто вместо одного действия запихивания в БД, выполняем несколько.
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    Александр Попов:
    3. Настроить выгребание писем от Mailer Daemon из почтового ящика для отлупов (обычно это ящик, указанный как отправитель) - думаю не очень сложно.

    4. Филипп абсолютно прав - не допускается ни капчи, ни каких-либо проверок на валидность пользователя. Поступил запрос - будьте добры исключить ящик из базы. Как вариант - генерировать каждому пользователю уникальную ссылку для отписки, чтобы однозначно его идентифицировать, плюс туда же в урл запихать какой-нибудь хэш, чтобы было сложно подобрать урл руками. Таким образом можно достигнуть того, что пользователь будет идентифицироваться однозначно.

    5. Для mail.ru - выгребать почту из ящика, куда приходят отлупы от почтовиков, выделять те, которые "Spam report" и удалять из базы рассылки.
    Для Яндекса - не знаю, как насчет почтовых оповещений, но список тех, кто нажал "Спам" можно получить в postmaster.yandex.ru по нажатию на нужную кнопку в веб-интерфейсе... возможно есть еще как-то механизм, но сейчас я про него не в курсе.
    Для гмыла - пока непонятно :)

    6. PHP-разработчик вообще не должен этим заморачиваться. Его дело - просто сформировать письмо и отправить его на локальный почтовый сервер (просто вызвав стандартную функцию mail, или как там она называется в PHP). Таким образом вызывается системный MTA (Mail Transport Agent) - sendmail или exim или postfix. А дальше уже дело за системным администратором, который и должен настроить почтовый сервер со всеми механизмами подписей.
    Если админа под рукой нет - тогда в интернетах есть куча статей по настройке SPF (простая запись в DNS, указывающая, кто имеет право отсылать письма наружу в данной доменной зоне), куча статей по DKIM (здесь немного сложнее - формируется закрытый ключ и открытый ключ, открытый выкладывается, как и SPF-запись, в DNS зоны, а закрытый скармливается почтовому серверу, который подписывает данным ключом все исходящие с нужного домена письма). Есть еще DMARC... тоже настраивается записью в DNS и указывает чужим почтовикам, можно ли принимать письма с домена, если они не подписаны DKIM, но хост есть в SPF или наоборот и другие варианты.
    Варианты настройки под каждый конкретный MTA можно с легкостью найти с помощью гугла. У меня довольно узкая специализация в плане MTA (использую exim, а где нет exim - сношу, что там есть и ставлю exim :) и рекомендую ставить exim, ибо у него поддержка DKIM из коробки), поэтому навязывать и говорить, что "вот так правильно и никак иначе" - совсем не хочу.
  • Почему сетевая карта перестала работать без ограничения скорости?

    @xtreme
    Тогда хотя бы тестером кабель прозвонить и посмотреть глазами на контакты в разъеме сетевой карты. Если кабель по улице лежит - может у вас сетёвку вообще водой залило.
  • Почему сетевая карта перестала работать без ограничения скорости?

    @xtreme
    Больше 3-х лет кабель на улице? Удивительно, как он вообще три года выдержал :) Обычно одна-две зимы и хана. Оплетка трескается, туда заливается вода, дальше мороз-оттепель и "привет КЗ" :)
  • Как убрать зеркало нашего сайта?

    @xtreme
    Борис Белов: там в профиле теперь есть мой твиттер - логин скайпа - такой же, как идентификатор в твиттере. Добавляйся, но я за клавишами окажусь только часа через 2-3.
  • Как убрать зеркало нашего сайта?

    @xtreme
    Я ж вроде написал выше "или вообще любых других хостов". В контексте апача это значит скорее всего - определить первым хостом некий хост, который будет принимать вообще все соединения.

    Это, конечно, при условии что "зеркало1" и "зеркало2" - не ваши сайты.

    Попробую расписать, но могу ошибиться, потому как с чистым апачем очень давно не работал.
    В общем... сейчас у тебя (ничего, что на "ты"?) сделано так - в апаче есть только один виртхост. Вообще один. И как ты не ломись на веб-сервер, по любому адресу или айпишнику, если ты попал на сервер - открывается этот единственный виртхост в апаче.
    Надо (учитывая, что у тебя стоит apache 2.2) использовать директиву NameVirtualHost *:80 (вроде так, если не ошибаюсь, можно прямо дописать в ports.conf перед директивой Listen) и сделать в апаче несколько виртхостов (в sites-available), один из которых должен быть примерно вот такой:
    <VirtualHost *:80>
      RewriteRule ^(.*)$ http://citymoms.ru [R=301,L]
    </VirtualHost>

    А вторым уже ваш сайт.
    А теперь, надо сделать, чтобы дефолтный, который с редиректом - схватывался апачем первый.
    Когда работал с дебианом, добивался этого именами симлинков виртхостов в sites-enabled. Допустим default.conf ставил симлинков в sites-enable/000-default.conf. А последующим виртхостам делал симлинки прямо по названию файла, которое обычно начинается не с цифры. Таким образом 000-default.conf цепляется в апаче первым и считается дефолтным.
    В этом случае на виртхост с именем можно попасть только по имени, а если открыть в браузере IP-адрес или направить туда другое имя или вообще что угодно - сработает 301 редирект и браузер перейдет на сайт, указанный в редиректе.

    З.Ы. Если кто-то заметил неточность - я с чистым апачем давно не работал. Всю подобную грязную работу гораздо лучше выполняет nginx.
  • Как правильно настроить Exim?

    @xtreme
    А... да... вычистить спам-письма из очереди довольно просто. Когда вычислили скрипт, который отправляет спам-письма - просто сделайте поиск файлов по содержимому с названием этого скрипта в /var/spool/exim/input. Здесь уже не до сантиментов, можно их просто тереть. Exim сам разберется с отсутствующими письмами в очереди.
  • Как правильно настроить Exim?

    @xtreme
    Вычислить спамера довольно просто. Обычно сгенеренные с помощью PHP письма имеют заголовок X-PHP-Originating-Script (если нет, то какой-то параметр надо включить в php.ini... сейчас просто времени нет искать). В этом заголовке указан файл, который и сформировал письмо. Ну а дальше ищем тот самый файл.
    Скорее всего, у кого-то дыра в сайтике, через которую залили шелл, либо скрипт, с помощью которого POST-запросами формируют письмо на отправку и скармливают туда же список адресов.
    Сразу предупреждаю:
    1. На первый взгляд в файле будет все нормально
    2. На второй взгляд найдется непонятная строка в base64 (которая и является именно тем недренным кодом, который портит всю малину)
    3. Возможно строка не найдется сразу - излюбленные приемы спрятать - вставить строку в конец PHP через сотню-другую пустых строк, либо вставить в самое начало, но с предшествующими несколькими сотнями пробелов в строке, чтобы при открытии в редакторе строка уходила за край консоли (в этом случае, например, в mcedit здорово помогает клавиша F2 в режиме просмотра - она сворачивает строки в размер экрана).
    4. Если строка нашлась - выключайте доступ к зараженному сайту (прям наглухо), а затем уже разбирайтесь. Обычно зараженным оказывается не один файл, а сразу несколько... плюс к тому, где-то должен лежать еще бэкдор, через который злоумышленник и изменяет файлы.
    Вычислять злоумышленника обычно смысла нет - его работу выполняют боты. Все идет по четкому сценарию. Можно по логам вычленить адреса зловреда и прикрыть его файрволлом, но вряд ли это надолго поможет.

    Там еще много чего в загашнике, но это первое, что вспомнилось.
  • Почтовый клиент для Gmail с сортировщиком писем?

    @xtreme
    Фильтрами можно как угодно рулить - указать, что при навешивании ярлыка удалять из входящих - и всё.
  • Как правильно настроить Exim?

    @xtreme
    Кирилл: Это зависит от того, кто у тебя принимает почту. Я уже даже забыл, как настраивать почтовик на приём почты :-) У меня обычно приемом почты заведует Yandex или Gmail, это гораздо проще, занимает меньше времени и убирает тучу проблем со спамерами и почтоклиентами.
  • Что бы вы посоветовали поменять в таком конфиге NGINX?

    @xtreme
    Тёма Макеев: Если будет больше одного сайта - в этом случае вполне можно оставить только ssl_certificate и ssl_certificate_key в server, остальное вы вряд ли будете менять (ну может еще ssl_session_cache будете менять и dhparam, но сильно вряд ли это будет происходить именно на этой машине).
    Заголовок Strict-Transport-Security тоже, имхо, излишен, если не задаются параметры тех самых Security.
    Выкручивание буферов при отдаче чистого html - также сомнительная оптимизация, включая client_max_body_size, которого при отсутствии POST-запросов за глаза хватает дефолтного.
    rewrite ^/(.+)/$ /$1 permanent; - вообще не сильно понятно, зачем. Чтобы после имени файла никто не дописывал слэш? А как быть с директориями? Обычно наоборот слэш дописывается... при вызове директории сначала сработает реврайт, а затем еще try_files три раза дернет диск, затем выведется index.html в директории, но в адресной строке будет некрасивый урл без слеша :) (У меня просто личная неприязнь к урлам без слешей :-) )
    resolver действительно, лучше сделать локальный. Зачем дергать гуглоднс по разным неприятным запросам? Главное, если на сервере ipv6 нет, выключить его в named - встречал я непонятные тормоза и попытки отрезолвить сначала IPv6, а уже затем, после таймаута, IPv4.
  • Как ускорить загрузку гифки 22Кб со своего же сервера (используется JS)?

    @xtreme
    coderisimo: К сожалению, я не знаю, что имели ввиду авторы Plesk под данной опцией. Предпочитаю контролировать конфиг самостоятельно. Возможно она действительно поможет.
  • Как ускорить загрузку гифки 22Кб со своего же сервера (используется JS)?

    @xtreme
    Сложно выдать какой-то ресурс, в котором бы все было описано. К тому же, nginx инструмент довольно мощный и вряд ли какой-то ресурс в красках и живописно охватит все аспекты его применения и способов конфигурации.
    Скажем так - для начала неплохо было бы почитать официальную документацию на nginx.ru (nginx.org). Не надо читать прямо сейчас, когда жёппа в огне. Дома, не спеша, пройтись два-три раза, чтобы хотя бы иметь представление, что и где искать в случае надобности.
    Дальше - начать применять nginx по-частям. Не сразу с корабля на бал с конфигом в 30 файлах, с адскими регулярками, проверкой куков и прочее... А, например, на каком-то простом проекте начать с простого

    upstream local {
      server 127.0.0.1:81;
    }
    
    server {
      
    listen 80;
      server_name www.trololo.com;
    
      location / {
        proxy_pass http://local;
      }
    }


    Т.е. просто спрятать все за nginx, заставив его просто проксировать все на бэкенд.
    Затем, включить локейшн для отдачи картинок, чтобы не терзать ими апач.

    location ~ \.(jpg|png|gif) {
      root /var/www/trololo.com;
    }


    Затем включить gzip (ну, видимо уже сталкивался), ну а дальше наворачивать и наворачивать :)

    Если интересно - пиши, помогу, чем смогу, если время будет :)
  • Как ускорить загрузку гифки 22Кб со своего же сервера (используется JS)?

    @xtreme
    coderisimo: А как ты понял, что файл отдается nginx? Браузером это не увидеть - nginx его в любом случае отдаст. Другое дело - кто читает этот файл с диска - сам nginx (это быстро) или nginx передает твой запрос бэкенду (обычно апач), и потом уже бэкенд считывает с диска файл и отдает по цепочке обратно (это медленно)?
    Я привел выше пример секции конфига nginx для отдачи всех урлов, имеющих в составе /img/ напрямую с диска.
    Возможно, секция будет выглядеть по-другому, например:
    location ~ .+\.(git|png|jpg|css|js) {
    root /var/www/.... ;
    expires 1y;
    }
    И то, будет ли оно работать, зависит от местоположения location в конфиге.

    Как почти стопроцентный вариант узнать, отдает ли nginx файл сам или проксирует запрос на него в апач - сделать свой logformat, например:

    log_format useragent '$remote_addr - [$time_local] "$host" "$request" $status ($bytes_sent) "$http_referer" '
            '[$request_time] gzip:"$gzip_ratio" cache:"$upstream_cache_status" "$content_length" '
            'agent:"$http_user_agent" "upstream: $upstream_addr time:$upstream_response_time sec.";


    и к директиве access_log у сервера приписать формат лога useragent... В таком случае в логах запись будет формата:
    80.60.50.12 - [02/Dec/2015:16:45:34 +0300] "trololo.com" "GET /Feed/Games?lng=ru HTTP/1.1" 200 (5343) "https://trololo.com/games/" [0.019] gzip:"-" cache:"EXPIRED" "-" agent:"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0" "upstream: 127.0.0.1:80 time:0.018 sec."

    Обрати внимание, что здесь указан адрес апстрима (т.е. куда nginx направил запрос) и время его ответа. Здесь явно видно, что запрос GET /Feed/Games?lng=ru HTTP/1.1 был отправлен на апстрим, находящийся на адресе 127.0.0.1:80 и апстрим ответил за 0.018 секунд. А сам nginx отработал запрос за 0.019 секунд (значение в квадратных скобках).
    А, например, запрос на файл, который отдавался самим nginx-ом будет выглядеть примерно так:
    80.60.50.12 - [02/Dec/2015:16:52:21 +0300] "trololo.com" "GET /img/76.png HTTP/1.1" 200 (1870) "https://trololo.com/" [0.000] gzip:"-" cache:"-" "-" agent:"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:42.0) Gecko/20100101 Firefox/42.0" "upstream: - time:- sec." "UA=-"

    Т.е. указания апстрима нет, как и его времени ответа, как и многих других полей. Здесь можно точно сказать, что файл отдался nginx-ом. (Кстати, время обработки запроса при отдаче статики обычно такое, как здесь - [0.000])

    Подозреваю, что диск у тебя ни причем. Поскольку с самого твоего сервера отдается не так много ресурсов... MaxCDN используется? Да и файл бы уже попал в дисковый кеш и не читался бы с диска каждый раз. С 99% уверенностью могу утверждать, что дело у тебя как раз в том, что вместо того, чтобы отдать файл напрямую, nginx проксирует запрос на него в и так загруженный апач (ну или что там в качестве бэкенда). Дело осложняется тем, что, судя по заголовкам, у тебя установлен Plesk, а с ним у меня довольно сложные взаимоотношения :) Мы с ним никак не можем договориться, кто ответчает за конфиги - сисадмин или Plesk :)