• Как настроить nginx под 800 запросов в секунду?

    @maxtm
    Make money, not job
    сейчас в какой то момент при серверном рендеринге некоторые запросы провисают и nginx рвет соединение в итоге часть запросов к сайту падает.


    Даже голый инстанс nginx тяжело убить всего-лишь 800 рпс. Пусть это даже будет одноядерное гамно.
    Мне кажется, думать о тюнинге самого nginx пока рано, по опыту - 4-5к рпс на 1 ноду nginx не создает никаких проблем для обычного 2х ядерного DO'шного сервака за 15$.

    Проблема не веб-сервера, проблема бэкенда, который стоит за ним.

    Соединение рвется с кем? То что с клиентом - понятно, какой ответ отдает nginx, наверное 504?
    Рвет соединение с клиентом он скорее всего потому-что бэкенд отвалился. Кто отваливается из бэка?
    Если с пыхой - ковырять пыху.
    Если с нодой - ноду.

    Обрывать соединения nginx может по ряду причин:
    - connection timeout при общении с бэкендом
    - обрыв соединения с бэкендом
    - некорректный (ошибочный) ответ бэкенда
    - туева хуча ошибок при общении с клиентом (это опускаем)

    Обо всем этом nginx успешно пишет в свои логи, посмотрите что там происходит.
    Также, сам пых и ноду можно настроить логи на отладку.
    У пыхи есть трейсинг слоу-логов, логирование каждого запроса и прочее.

    Маны и бубень в руки. Удачи!
    Ответ написан
    2 комментария
  • Как правильно настроить vsftpd на сервере Nginx + php-fpm?

    @xbox
    ставьте права на файлы 640, на директории 750
    владельцем user1, группа www-data
    При этом nginx должен запускаться от пользователя www-data, а php-fpm от пользователя user1. По Ftp заходите от пользователя user1.
    user1 в группу www-data добавлять не нужно.

    Если у Вас несколько сайтов, то для второго сайта владельцем ставите user2, группу www-data, по ftp подключаетесь от user2.

    Если сайтов несколько то для каждого настраивается свой пул php5-fpm, каждый из которых запускается от разных пользователей.

    Результат: процессы php, а значит и WordPress будут иметь полный доступ к файлам только своего проекта и не будут иметь доступа к файлам соседних по VPS проектов. Nginx будет иметь доступ ко всем проектам только на чтение. По ftp каждый пользователь будет иметь полный доступ только к своим проектам. Лишние права доступа на файлы убраны. Если взломают один из сайтов VPS то хакер обычно получает права доступа того пользователя, от которого запущен пул php-fpm. (Взлом nginx маловероятен) Т.е. при взломе хакер получает полные права на один проект, но не может даже прочитать, а тем более записать в другой проект. Чтобы дополнительно обезопасить сервер, используйте chroot в настройках php5-fpm и ftp. Это очень сильно повышает безопасность. Но настройка chroot в php5-fpm обычно требует дополнительных танцев с бубном (изменение конфигов других сервисов, которые перестают работать из-за изменения путей и т.п.).

    Я раньше легкомыслено относился к настройкам безопасности, пока случайнр не нашел на своем VPS в двух проектах одинаковый шел-скрипт. После того, как я понял, что это за скрпит, я его запустил (просто в браузере набрал адрес соответствующий) и реально обалдел. Шел-скрипт позволял легко ходить по всем папкам проектов (отдельным сайтам), расположенным на VPS, позволял произвольно записывать и удалять файлы в этих проектах, позволял заходить в корень файловой структуры, например в папку /etc и читать все конфиги в этой папке . Хоть конфиги были с доступом только на чтение, реально в них хранится куча конфиденциальной информации. Например, некоторые пароли стандартные сервисы в таких конфигах хранят в незашифрованном виде. Скрипт позволял выводить список запущенных процессов и произвольно убивать процессы, запущенные от того же пользователя и т.п. Кроме этого все основные способы, необходимые для поиска уязвимых мест и дельнейшего вредительства в скрипте автоматизированы. Т.е. через этот шел-скрипт во многих случаях мне было удобнее работать с сервером, чем через putty и winscp. И в дальнейшем этот шел-скрпит я использовал для тестирования безопасности каждого проекта. Т.е. кроме решения локальной задачи, я Вам рекомендую сразу в комплексе безопасность проверить.
    Ответ написан
    1 комментарий