• Nginx front + apache back. Как настроить под разных пользователей?

    @xtreme
    proxy_pass http://username.ru:8080/;
    Вот тут еще непонятно. Если там реальное имя сайта, то будет тратиться время на резолвинг, плюс обращение будет к внешнему интерфейсу, да и держать апач на внешнем интерфейсе, хотя и не на стандартном порту - как-то не очень. (Это я исхожу из того, что nginx на той же машине, что и apache)
    Далее - в конфиге nginx можно использовать переменные, если конфиги однотипные. Например:
    upstream apache {
      server 127.0.0.1:8080 fail_timeout=0 max_fails=0;
    }
    
    server {
            listen 80;
            server_name  "~^(?<userhost>username|username2|username3)\.ru$";
    
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            client_max_body_size 10m;
            proxy_connect_timeout 90;
    
            location / {
                proxy_pass          http://apache; #Кстати, завершающий слэш не нужен, $uri передается начиная со слеша, так что будет задвоение
                proxy_redirect      off;
            }
    
            location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|rar|tgz|gz|js|bzip2|zip|tar|tiff)$ {
                root /home/$userhost/public_html;
            }
        }
  • Провайдер заблокировал DNS траффик. Как обойти?

    @xtreme
    Нет, не правильно... что-то у гугла случилось. Работает не везде. Вот друг тему поднял: habrahabr.ru/post/274095
    Можете переключиться пока на Яндекс.ДНС 77.88.8.8 например, если провайдеру не доверяете.
  • Как, имея на руках бэкап /var/lib/mysql/sitename восстановить базу данных sitename?

    @xtreme
    Если есть доступ к старой БД - гораздо проще запустить демона со сбросом прав, а затем зайти в консоль и сменить пароль рута.
  • Nginx + gunicorn + ssl. Разные конфиги для разных поддоменов на одном сертификате. Это возможно?

    @xtreme
    newca9h: Опять какая-то фигня.

    try_files $uri @sub_example_com;
    Та же самая проблема. Если файл найден - отдаем файл. А если не найден? Что отдавать? В данном случае идет перенаправление на именованный локейшн @sub_example_com. А сам локейшн @sub_example_com нигде не описан. Опять же, из-за отсутствия root, ваш try_files не может найти никаких файлов.
    В вашем случае либо try_files вообще не нужен (если есть только один локейшн и все запросы уходят на бэкенд), либо надо еще описать location для тех файлов, которые не надо проксировать на бэкенд, если они имеются.
    Ну а дальше - настраиваем log_format и смотрим логи... кто, кого и куда редиректит. И пока можете убрать proxy_set_директивы из основного location. Они сейчас больше захламляют конфиг, чем помогают осознать, что и зачем надо. Насчет log_format - где-то в моих ответах я приводил свой формат лога, с которым я работаю и в котором можно посмотреть взаимодействие с бэкендом (это чтобы исключить неправильный конфиг nginx, если вдруг бэкенд отдает редирект).
  • Почему не работает error_page в nginx?

    @xtreme
    Еще вот тут
    location = /errors/ {
      root "/var/www/common";
      internal;
    }

    Знак равенства не нужен (просто уберите его). Это жесткое равенство. В этом случае в локейшн попадет только mysite.ru/errors, но не попадет mysite.ru/errors/index.php.
    Но так тоже вряд ли заработает так, как ожидается - браузеру отдастся 302 на /errors/index.php, вполне возможно, что обработка уйдет в \.php$, а не в errors (в этом случае получим 404 от php-cgi и уйдем в циклический редирект), а если попадет в /errors/ - скорее всего не сработает php-скрипт, а клиент получит text/plain.
    Я бы, наверное, сделал так:
    error_page 400 /errors/index.php?400;
    error_page 403 /errors/index.php?403;
    error_page 404 /errors/index.php?404;
    error_page 500 /errors/index.php?500;
    
    location / { try_files $uri $uri/ =404; }
    
    location ~ /errors/.+\.php {
       root /var/www/common;
       fastcgi_pass unix:/var/run/php5-fpm.sock;
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
       include fastcgi_params;
    }
    
    location ~ \.php$ {
      try_files $uri =404;
      //Остальные параметры fastcgi
    }


    В свою защиту скажу, что отказался от php-cgi и php-fpm в пользу связки nginx+apache из-за длинного и запутанного результирующего конфига в случае с php-cgi.
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    Сергей: да причем тут LAMP? Вы привели ссылку на StackOverFlow, где обсуждается проблема на винде. Я и ответил именно на этот Ваш комментарий.

    А у топикстартера вообще FreeBSD, он уже сам докопался до того, что надо подсобрать mod_php5, который с некоторого времени собирается из портов отдельно от основного порта php5 и ссылки даже на LAMP ему не сильно помогут (ну нет aptitude и apt и yum в FreeBSD).
    Переставить - да, поможет, но вопрос был в том, как починить имеющееся, а не убить и восстановить.
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    libtool обновлял? Лучше воспользоваться чем-то типа portupgrade, чтобы зависимости тоже обновить.
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    Vincent1: ОК, в /usr/local/libexec/apache22/ вообще есть какой-либо файл, напоминающий libphp5.so?
    Если нет - поясни, как ты собирал новый php?
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    Александр А: Тем, что по ссылке на StackOverFlow человек пытается воткнуть в apache-2.2 библиотеку от apache-2.4. Это я ее имел ввиду специфической, если что.
    И решение апгрейдом виндового апача с виндовым PHP слабо кореллирует с данным топиком, в котором упомянут FreeBSD 8.
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    Сергей: Зачем вы человеку обсуждение виндового апача с php даете? Там явно специфично-виндовая проблема с несовместимостью. В FreeBSD такой проблемы нет. Человек просто собрал новый PHP, который, кстати, нормально совместим с apache-2.2.
  • Не запускается apache 2.2 после обновления PHP. Как исправить?

    @xtreme
    Ну, значит включи модуль. Строку я тебе привел :) Рядом с другими LoadModule поставь. Пока не попробуешь - чуда не произойдет :)
  • Nginx reverse proxy в зависимости от ответа сервера?

    @xtreme
    Выше в комментариях Алексей Тен правильно сказал - можно перехватывать ошибки с помощью proxy_intercept_errors, затем подменять на свои, а свои уже, думается, можно вполне обрабатывать.
  • Nginx reverse proxy в зависимости от ответа сервера?

    @xtreme
    Алексей Тен: Ух... спасибо за наводку. Я не автор вопроса, если что.
  • Apache2 virtual host, почему не перенаправляет?

    @xtreme
    в 00-default.conf задайте ServerName какой-нибудь localhost вместо site.ru, если дефолт не нужен. Он у вас первым обрабатывается. Или вообще его можно отключить.
  • Apache2 virtual host, почему не перенаправляет?

    @xtreme
    NameVirtualHost *:80
    в конфигах есть? (в случае apache-2.2)
  • Временами долгий отклик от поддомена. nginx поддупливает?

    @xtreme
    Андрей: в профиле есть твиттер, если нужен скайп - логин такой же, как юзернейм в твиттере

    Интересно не сколько кушают воркеры, а в каком состоянии они находятся. К сожалению, вспомнил, что нормально читаемые состояния - в BSD-шном top... В линуксовом top колонка S. Напротив воркеров будет находиться состояние - D или R или S
    По iotop нагрузки на диск нет?
  • Временами долгий отклик от поддомена. nginx поддупливает?

    @xtreme
    Андрей: Не сочтите за наглость - можно урл картинки? Нагрузка большая на сервер? С количеством worker_processes не переборщили? Какое состояние воркеров nginx в выводе top?

    Еще момент - для статики неплохо включить aio в nginx. Очень помогает в случае нагрузок выше средних.
    В log_format включите время обработки запроса - по логам тоже отдается картинки долго? Или 0?
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    sulla: Хм. С таким типом "отлупов" я еще не сталкивался. Действительно, проблема, скорее, социальная. Со своей колокольни, я бы смотрел под другим углом - полезна ли рассылка данному получателю? Вполне может быть, что manager@ и support@ просто не читают письма или настолько привыкли к ней, что не замечают в общей куче, а единственный реальный человек, который их видит - это тот самый vasia@, которому эта рассылка уже не нужна. В этом случае, я бы прекратил рассылать письма на этот адрес. Лучше пусть один не получит, но у сотни других письмо не попадет в спам автоматически.
    Если же вы точно знаете, что рассылку читают, то, возможно не лишним было бы связаться с "заведующим" корпоративной почты (как бы это не оказался vasia@), чтобы либо он настроил фильтры, чтобы vasia@ не получал ваше письмо, либо повлиял на vasia@, чтобы он не жал "Спам".
  • Как нужно делать рассылку со своего сайта (сервера)?

    @xtreme
    sulla: Если я правильно все понимаю, то главное, чтобы письма не распознавались, как спам в самом первом ящике. Насчет корпоративных ящиков - мы же говорим о публичных сервисах? (Gmail, Yandex, Mail.ru) Потому что "корпоративные ящики" на своих серверах мало волнуют рассыльщиков - фильтр спама на таких серверах настроен, обычно, как захочет левая пятка племянника соседа по гаражу, и, чтобы не попасть там в спам-фильтр, зачастую надо лично знать сисадмина, который этот почтовик настраивал.
    Так что если у человека письмо попадает в "спам" после переадресации - тут два пути: либо человек вносит ваш адрес в "белый список", если ему интересна ваша рассылка и вы имеете читателя, либо не вносит, но тогда он не читает ваше письмо - в этом случае вам надо самим решить, как делать - либо, если точно знаете, что он не читает письмо, прекратить ему слать почту, либо, если знаете, что читает - продолжать оповещать его об изменениях.
    Крупные сервисы, например, если не уверены в том, что я их читаю и не видят меня в посетителях на сайте (это же очень легко проверить), высылают контрольное письмо, в котором размещают ссылку, кликнув на которую я подтверждаю, что читаю их рассылку. Если я не кликнул - они убирают меня из базы рассылок. Если не ошибаюсь, пару месяцев назад получал такое письмо то ли из SuperJob.ru, то ли из drive2.ru. Такой подход, сказать честно, мне очень понравился, теперь планирую сделать также у себя, чтобы не отсылать тысячи писем "в никуда".