LINUX.ORG.RU

Nginx и noexec

 ,


0

2

Вообщем читаю один английский форум, печатают что можно мол установить на директорию хоум, или же вообще создать отдельный раздел и поставить туда сервер, как думаете, безопасно так сделать как они советуют ? в плане сделать раздел, или директорию с параметрами noexec они сказали что вообщем может быть конечно полезно это сделать во избежании эксплоитов запуска их. Т.е если даже атакер залезет через дыру скрипты, то он все равно не сделает ничего т.е не запустить эксплоит бинарник как они говорят, а со скриптом мало что можно сделать.Как это еще повлияет на связку nginx+php-fpm просто хочу сделать что бы все было на своих местах отпимизированно защищенно.

К примеру я сделал токой Noexex на /tmp директорию, как я и говорил ранее, перемонтировав его. Потому что я читал туда тоже могу закачать, плохие файлы. Это конечно сложно сделать ибо я сделал фильтры в аплоаде по формата, очень хитрые хы хы. Так что они не закачают.

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



Последнее исправление: nixbrain (всего исправлений: 2)

Настрой SELinux. Например в CentOS по умолчанию ничего не получиться запустить.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)

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

- в случае паранойи можно пробросить порт в kvm

мне кажется noexec обойти можно, в случае взлома

решето обычно кроется в различного рода уязвимостях: переполнение буфера, SQL-injection, xss, human-фактор, бинарщина...systemd...

anonymous
()

а со скриптом мало что можно сделать

Если шелл залили, то уже все, поздно. Тем более никто не запрещает запускать бинари из /usr, а там например питон лежит. Нативные программы ты может и не зальешь, но возможностей PHP и Python хватит с головой.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Так что посоветуете. Просто я читаю щас и там и там, кто то за кто то против, т.е сама структура веб сервера какая должна бать ? К примеру у меня щас только диск /dev/sda1 1TB, я хочу разобратся с начальными настройками безопасности, и разделами, что бы в дальнейшем было удобно все использовать.

К примеру я хочу что бы папка с сайтом, была на отдельном разделе ?

Папка логов ? /var/logs

Т.е как посоветуете сделать ? что бы все удобно,и безопасно было, а так щас у меня все на одном разделе.

nixbrain
() автор топика
Ответ на: комментарий от anonymous

На счет стороны веба я не сильно беспокоюсь, у меня больше вопросов по системе, так как я не очень знаком, хочу прояснить как все рабзбить правильно, и что защитить. А потом уже все остальное делать.

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

сделаешь всё идеально, а через инъекцию грохнут или сольют базу

на мой взгляд разделение доступа в первую очередь регулируется соответствующими пользователями и вхождение их в соответствующие группы, но это не спасёт, если софт старый (а это обычное дело на продакшене или рабочем сервере - по 1-5 лет не обновляемые, потому как боятся нарушить правило: «Работает - не трогай», да и неудобно это)

anonymous
()
Ответ на: комментарий от anonymous

Это я все учел, обновление будут происходиь в мануальном режиме, так же будут вносится корректировки, после него, если что не так. Ну я не об этом. Мне щас важна часть, разбиение разделов так, что бы было удобно всем управлять, и не, что бы все было в одном скопе, через иньекцию не грохнут :) Я же говорю, за фрон энд и его функции не стоит переживать. Меня интересует, сделать раздел, и на нем держать все файлы веб сайта, на другом держать логи (не знаю правильно это или нет) в том плане что бы под раздел /var/log сделать к примеру /dev/sda3 ? ну это я теоритически понимаю - но не знаю правильно ли это в итоге будет как то так

1.Boot

2.WebServer

3./Var/logs

Ну и естесвенно правила к ним типа Noexex nosuid etc.

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

Я так настраиваю:

Один раздел. Под каждый сайт создается отдельный пользователь (соответственно и группа и домашняя директория). Nginx добавляется в группу этого пользователя, чтобы он мог читать статику. Для каждого сайта запускается пул php-fpm от своего выделенного пользователя. php-fpm слушает на unix-сокете с правами 600 с пользователем и группой nginx. На домашние директории права 750 — PHP может писать, nginx может читать. Пользователь и группа srv-examplecom, например. Таким образом, если ломанут один сайт, то доступа к другим сайтам не будет. SELinux. Файрволл.

Для большей безопасности запрети в PHP использование функций типа exec и прочих. Включи SELinux — очень многое блокирует: exec, чтение/запись файлов не относящихся к сайтам, подключения к удаленным хостам (reverse shell не пройдет) и много чего еще. В общем SELinux — must have, если решил озадачиться безопасностью. У SELinux только одна проблема — его нормально готовят только в RHEL и прочих редхатовых CentOS и Fedora. Firewall тоже не будет лишним, хотя обычно для взломщика это не сильно большая проблема. Также настрой аудит (auditd). От проникновения не поможет, но зато поможет понять как тебя взломали.

Разные разделы и опции монтирования на безопасность не влияют вообще никак. Через PHP можно делать ВСЕ. Генерируется специальный shell, заливается на сайт, взломщик подключается и имеет твой сервер. Если запретить exec в PHP, то иметь будет не так удобно, но у PHP помимо exec есть еще много функций, через которые можно прочитать конфиги, слить базу, пошариться по файлам и т.д. Еще раз повторю: через скрипт можно сделать все тоже самое, что и через обычный бинарник.

Еще важно настроить бэкап, если взломают, то можно быстро восстановиться.

А разделы на сервере в большинстве случаев вообще не нужны (только если это не файловое хранилище).

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Кстати можешь LVM поднять. Можно бэкап базы прикрутить через снапшоты или вдруг потом переезжать надумаешь на другой сервер. Но вообще не нужно.

Black_Roland ★★★★
()
Ответ на: комментарий от zunkree

Метку httpd_user_content_t на все директории с сайтами и httpd_sys_content_rw_t на те директории, куда нужны права на запись. Если сайтов много, сайты разношерстные и везде говнокод, то просто забиваешь и ставишь httpd_sys_content_rw_t на все.

Unix-правами тут не удобно разруливать. После деплоя надо права чинить, либо ставить umask. Если руками поправишь, распакуешь, то опять права чини. А так на поддиректории все само проставляется.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

Если сайты говнокод, то тем более нельзя им давать запись на все. И не важно selinux или просто rwxrwxrwx. Сайт не должен писать туда, откуда от выполняет код.

То-то у меня больше сотни сайтов деплоилось без проблем с unix правами.

zunkree
()
Последнее исправление: zunkree (всего исправлений: 1)
Ответ на: комментарий от zunkree

Если сайты говнокод, то тем более нельзя им давать запись на все.

И под каждый сайт прописывать права? И сколько времени это займет? А косяк с правами может обнаружится не сразу. Пока обнаружится уже половина посетителей просто забьет на сайт, в итоге клиенты утеряны.

То-то у меня больше сотни сайтов деплоилось без проблем с unix правами.

Реквестирую подробности. Как деплоилось, чем, как восстанавливались права и что делать с сайтами, разворачиваемыми вручную?

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

О спасибо !!! Я примерно все так и настраиваю ! только думал что с разными разделами все будет удобней. Щас не много раскажу что я делаю, может когда все запущю и настрою напишу (постараюсь написать что бы понятно было людям) мануал по полной настройки сервера со всеми вытекающими проблемами с которыми я сталкивался.

1.Защита ссш фраза+ключ

2.PHP.ini - Выключение всех не безопасных функций

3.Mysql - Бинд на локалхост онли, local-infile=0

4.Защита с помощью .htpasswd + bind ip + directory alias что бы к примеру не смогли найти phpmyadmin (а то читал там они ищют его)

Там еще что не помню уже, а так просто меня интересовало безопасность именно в системе, типа noexec итд, потому как я с системой не очень давно знаком мне не много тяжело понимать что и как, но стараюсь, как я понял , главное это права.

На счет пользователей, в самом Начале, у меня рут юзер, что я делаю.

1.Я создаю юзера admin

2.Visudo (Делаю для админа ALL ALL)

3.По Ssh можно залогиниться только админу, и только с ключом, с помощью пароля и юзера под именем рута, нельзя.

А вот на счет групп... я что то с ними вообще дело не имел, надо понять как работать с группами, и как ее правильно настроить - создать для работы с веб сервером.

nixbrain
() автор топика
Ответ на: комментарий от zunkree

Сайт не должен писать туда, откуда от выполняет код.

Ну и location /index.php, вместо регулярки \.php в nginx тоже нужен.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 2)
Ответ на: комментарий от Black_Roland

httpd_sys_content_rw_t

Кстати я так и делаю в самом конце когда сайт закачаю, прочитал на английском форуме, что так надо, для селинукса сделать

nixbrain
() автор топика
Ответ на: комментарий от zunkree

«„Тоесть php может писать в весь проект? Гениально блин, просто очень гениально.“»

Как это понять писать в весь проэкт ? не пойму не много. У меня там права на все файлы 0644, и на папку с картинками только 0755 куда они закачиваются, и все. Остальное пишется в базу.

Т.е пост+картинки

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

Кстати я так и делаю в самом конце когда сайт закачаю, прочитал на английском форуме, что так надо, для селинукса сделать

:) Ну тут zunkree правильно писал: по хорошему права на запись должны быть только на определенную директорию, а не по всему проекту. Хотя защита так себе, потому что shell как раз и будут заливать в эту самую директорию.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

В какую директорию ? картинок ? или всего сайта ?

П.с помню я писал что перешел с панели плеска, на ручное управление nginx+php-fpm и наверное к панели не вернусь больше :) я просто с ней намучался, все настроил но намучался с этими конфигами, и с ее ошибками, которые вылетали то оттуда то отсюда, а вот когда поставил руками nginx+php-fpm это другое дело, минимум всего. Все что нужно под рукой. У тебя не работает в системе 100500 сервисов.

Но вот раберусь с правами - безопасностью

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

Ну и потом бекап настроить и вроде все., ну там по ходу конечно может что то забуду.

Блин такое впечетление как будто я космический карабль запускаю :)

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

Кстати на счет караблей, там я помню читал как то про их систему.. ооо да там ошибок в ней может быть 000001% процент, вообщем почти до безупречности ее делают, подробности не помню, помню что был под впечетлением..

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

Как это понять писать в весь проэкт ? не пойму не много. У меня там права на все файлы 0644, и на папку с картинками только 0755 куда они закачиваются, и все. Остальное пишется в базу.

Ну вот у тебя тоже по всему проекту можно писать. На все файлы, кроме директории с картинками нужны права только на чтение (550/440). Нужно для того, чтобы у взломщика не было права редактировать код проекта, либо код фреймворка.

При этом все равно можно залить посторонний код в директорию с картинками. Если у сайта единая точка входа (в большинстве случаев так и есть, исключение Битрикс, например), то нужно разрешить выполнять код только этого файла, а все остальные .php запретить. Например так:

# Редирект запросов на единую точку входа — /index.php
location / {
    try_files $uri $uri/ /index.php$is_args$args;
}

# Перенаправлять /index.php в PHP-FPM
location /index.php {
    fastcgi_pass  unix:/something.sock;
    ...
}

# PHP-скрипты кроме /index.php теперь не выпоняются, но скачиваются, т.е. будет видно код php-файлов. Заодно блокируем файлы Git.
location ~ (\.php|\.git.*)$ {
    return 403;
}

Если так настроить, то залитый в картинки .php файл не выполнится — получим 403.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 2)
Ответ на: комментарий от nixbrain

В какую директорию ? картинок ? или всего сайта ?

Смотри пост выше. Права на запись должны быть только у директории с картинками.

П.с помню я писал что перешел с панели плеска, на ручное управление nginx+php-fpm и наверное к панели не вернусь больше :) я просто с ней намучался, все настроил но намучался с этими конфигами, и с ее ошибками, которые вылетали то оттуда то отсюда, а вот когда поставил руками nginx+php-fpm это другое дело, минимум всего. Все что нужно под рукой. У тебя не работает в системе 100500 сервисов.

Руками тоже намучаешься, посмотри Ansible или Chef, Puppet — что больше понравится.

и вроде все

Мониторинг: Munin, Monit, Nagios и т.д.

Black_Roland ★★★★
()
Ответ на: комментарий от nixbrain

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

Логи в идеале нужно хранить на другом сервере (через rsyslog например). Если взломают, то почистят логи, чтобы замести следы. Если логи на другом сервере, то тогда их удалить не получиться, а ты сможешь узнать как тебя взломали (хотя и не всегда это можно выяснить по логам).

Следить за логами можно через logwatch, но я лично не использую, слишком геморно. Если говорить о безопасности, то можешь настроить какой-нибудь rkhunter — анализирует логи, файлы и пр., а также сообщит, когда взломают.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Деплоилось через jenkins. И фактически он был овнером всех файлов проекта кроме тех что генеряться web/app-сервером, тот-же кеш в симфони и т.д. Но было одно но, у jenkins были права выполнять php от имени web/app-сервера. То-есть все действия которые затрагивали файлы/каталоги сгенеренные web/app-сервером выполнялись с его правами. Немного сумбурно, но как-то так.

До того как поменяли схему на эту были вечные проблемы с правами и тому подобным. С такой схемой админов дергать перестали совсем. Просто надо разделить действия самого переноса новых файло и их подготовки от имени web/app-сервера. После этого все круто.

A php-fpm вообще от nobody:nogroup работал, во избежание. Но тут схема: один проект на один контейнер. Но достаточно просто она расширяется на многопроектные хосты.

zunkree
()
Последнее исправление: zunkree (всего исправлений: 3)
Ответ на: комментарий от anonymous

решето обычно кроется в различного рода уязвимостях: переполнение буфера, SQL-injection, xss, human-фактор, бинарщина...systemd...

............bash.............................................

anonymous
()
Ответ на: комментарий от anonymous

С вебом основное решето это инъекции и возможность пускать код оттуда, куда его могут записать юзвери.

zunkree
()
Ответ на: комментарий от Black_Roland

Блин, хотел ответить и заснул.

На счет логов понял.

1.Хранить на другом сервере

2.Анализ с помощью rhunter (как то читал)

3.Мониторинг munin (Уже есть)

«Руками тоже намучаешься, посмотри Ansible или Chef, Puppet — что больше понравится.»

Ну не думаю, у меня же не много сайтов, а один, не думаю что будет сложно настроить один, а если можно настроить один то и другой можно :) ну это уже другая история.

А на счет прав я понял вот что, создаем юзера, группу, даем права ему, и привязываем к нему область /usersite.com ? т.е у одного юзера будту права только на эту область. (Просто я с группами еще не работал, а юзера я сказал как создаю.. через visudo)

На счет единой точки входа что то плохо понял, просто у меня есть там пару скриптов которые вызываются не через index.php вроде. Хотя ошибаюсь кажется там все через index.php вызываются. Только не пойму как работает единсвенная точка входа в примере ? я понял что это в конфиге nginx - кофиг домена site.com.conf править надо, но что оно дает ? Мол другу страницу нельзя вызвать если ее нет в Index.php ?

nixbrain
() автор топика
Ответ на: комментарий от Black_Roland

У меня тут вопрос возник, у меня везеде в конфигурациях прописанно

fastcgi_pass 127.0.0.1:9000

В некоторых мануалах в сети есть вот такой код

fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;

Чем они отличаются ?

nixbrain
() автор топика
Ответ на: комментарий от Black_Roland

И еще можно попросить ваш пример конфига для сайта в nginx.

Ибо я смотрю мануалы, там вообще у все все слишком по разному, к примеру у кого то есть строки

tcp_nopush on; tcp_nodelay on;

У кого то они закомментированы, не пойму важности тогда, они надо или нет. Так же и с кип тайм аутом, тоже не везде он вводится, а если не вводиться тогда какой таймаут ? странно вообщем, приведите пример нормальные есть есть. Просто мануалы попадаются за 2011 год а щас наверно не много все по другому и не нужно все прописывать..

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

а если можно настроить один то и другой можно :)

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

А на счет прав я понял вот что, создаем юзера, группу, даем права ему, и привязываем к нему область /usersite.com ? т.е у одного юзера будту права только на эту область. (Просто я с группами еще не работал, а юзера я сказал как создаю.. через visudo)

Угу. Если создаешь пользователя, то группа для него создается автоматически, поэтому особо можешь не морочиться на этот счет. Только visudo же для редактирования sudoers, причем тут работа с группами?

На счет единой точки входа что то плохо понял, просто у меня есть там пару скриптов которые вызываются не через index.php вроде. Хотя ошибаюсь кажется там все через index.php вызываются. Только не пойму как работает единсвенная точка входа в примере ? я понял что это в конфиге nginx - кофиг домена site.com.conf править надо, но что оно дает ? Мол другу страницу нельзя вызвать если ее нет в Index.php ?

Nginx сам с PHP работать не может. По fastcgi он общается с PHP-FPM: просит выполнить такой-то такой-то скрипт, а PHP-FPM отдает уже готовый результат. Nginx отдает страничку клиенту. Директива fastcgi_pass как раз указывает nginx'у обращаться к PHP-FPM. Без нее у тебя php файлы просто будут скачиваться как статика. Если у тебя location ~ \.php, то все файлы с расширением .php будут отправлены в PHP-FPM и выполнены. Если у тебя на сайте используется один PHP-файл (в котором выполняется бутстрап, роутинг и т.д.), то лучше настроить location /index.php. В итоге если зальют PHP-файл в директорию с картинками, то он не выполнится.
В index.php выполняется бутстрап, при бутстрапе у тебя загружается фронт-контроллер, он парсит URL и выбирает какой экшн вызвать (какой код выполнить). У всех по разному, но примерно так.

Можешь сделать проще: location который закрывает php-скрипты в папке с картинками.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Спасибо большое за пояснение ! Я так вчера изделал, лазил по мануалам, там кто то советовал так сделать я вот записал в блокнок, что так нужно сделать и сохранил тот код. (Ну который закрывает файлы php в папке с картинками)

А что на счет visudo, я же правильно сделал ? создал имя админ, и прописал ему в visuo ALL ALL. Ну что бы я мог выполнять команды как рут ?. А то иногда я что то делаю пишет вечно permission denied..

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

fastcgi_pass 127.0.0.1:9000

Плохо по многим причинам.

Есть TCP-сокеты и UNIX-сокеты. Про TCP и так все понятно, а UNIX-сокеты это файл в файловой системе. UNIX-сокету можно указать права доступа как и обычному файлу.

А плохо потому что, во первых UNIX-сокеты быстрее — не нужно выполнять лишние действия, необходимые для работы по сети (меньше оверхэд). Во вторых у TCP-сокета нельзя настроить права доступа. Если у тебя есть несколько сайтов, запущенных от разных пользователей, то взломав один сайт можно подключиться к TCP-сокету другого сайта и выполнить код от имени другого пользователя.

Black_Roland ★★★★
()
Ответ на: комментарий от nixbrain

И еще можно попросить ваш пример конфига для сайта в nginx.
Ибо я смотрю мануалы, там вообще у все все слишком по разному

Там либо все просто, либо дикий ад, который лучше людям не показывать :) nginx.conf можешь оставить по умолчанию, просто настраивай виртуальных хосты в sites-enabled или где-то еще, где они у тебя подключаются.

Я параметры по умолчанию не трогаю обычно, nginx пока еще не был узким местом в производительности. В общем лучше не трогать и оставить как есть.

Black_Roland ★★★★
()
Ответ на: комментарий от nixbrain

А что на счет visudo, я же правильно сделал ? создал имя админ, и прописал ему в visuo ALL ALL. Ну что бы я мог выполнять команды как рут ?. А то иногда я что то делаю пишет вечно permission denied..

Аааа, в этом смысле. Да, все правильно. Root должен быть закрыт и использовать лучше другой аккаунт с sudo. Можно просто было пользователя admin добавить в группу wheel — по умолчанию в sudoers разрешено становиться рутом пользователям из этой группы.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

О, спасибо еще раз, а то понимаете, я читаю мануалы, 2011 годов, и то и позднее, там вообще столько настроек, которых как я понял щас нет, или не прописывают, или разработчики их убрали - вообщем сделали проще.

Ну на счет обращение 127.0.0.9:9000 я понимаю как это вроде работает, а вот с этим сталкиваюсь в первый раз UNIX Socket - я как то пытался его найти, (в дир - указанных в мануалах, так что то и не наше, и оставил я 127.. как есть) Но если вы подскажите как сделать это, или этот файл сам создается ? что то вроде /var/run/php-fpm/file.socket

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

А так нет, сайт пока что один, мне хотя бы один нормально настроить и запустить, и не много с ним поработать что бы понять за чем нужно следить что бы небыло утечки памяти, вообщем опасные места от которых может упасть сервер - или произойти что то плохое.

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

Кусок конфига пула PHP-FPM:

user  = srv-examplecom
group = srv-examplecom

listen = /run/php-fpm/examplecom.sock

listen.owner = nginx
listen.group = nginx
listen.mode  = 0600

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Ненужно же. Какой юзкейс у PHP-FPM по сети?

Почему-бы и нет?

- балансировка, кластеры, виртуалки...

anonymous
()
Ответ на: комментарий от nixbrain

А так нет, сайт пока что один, мне хотя бы один нормально настроить и запустить, и не много с ним поработать что бы понять за чем нужно следить что бы небыло утечки памяти, вообщем опасные места от которых может упасть сервер - или произойти что то плохое.

Падает обычно MySQL или PHP-FPM. MySQL обычно непонятно почему падает, :) а PHP-FPM может падать, если выделено недостаточно воркеров (параметр pm.max_children, по логам будет видно). Для того, чтобы не текла память пропиши pm.max_requests = 50000 в конфиг PHP-FPM — воркер будет пересоздаваться после каждых 50000 запросов.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 3)
Ответ на: комментарий от Black_Roland

1.Что будет если,«pm.max_requests» будет выключен ?

2.Что вообщем происходит когда падает к примеру MYSQL или PHP-FPM ?

Т.е когда падает, это типа как программа зависла и не работает, или убивается процесс ? Т.е потом достаточно перегрузить сервер, и все заработает ? (Просто у меня еще не чего не падало, ибо не запускалось) так на перед уточняю, просто я не много страшно :) когда все запустиш оно вроде все работает а потом что то начинает происходить и тут уже нужны прямые руки и соображалка :) ну и естесвенно опыт, которого пока что нет, ну все же начинать когда то надо.

nixbrain
() автор топика
Ответ на: комментарий от anonymous

Обычно делят на сервера приложений, сервера баз данных и фронтенды. На сервере приложений запускают вэб сервер полностью, а балансируют на фронтенде через nginx или haproxy. Т.е. на фронтенде тупо проксирование HTTP-трафика, балансировка и кэш, без правил fastcgi.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от nixbrain

Что будет если,«pm.max_requests» будет выключен ?

Как выключен? О_о Это же обязательный параметр.

Что вообщем происходит когда падает к примеру MYSQL или PHP-FPM ?
это типа как программа зависла и не работает, или убивается процесс ?

И так и так бывает. Может упасть процесс, может перестать отвечать на новые соединения. Настрой Monit — может следить и за процессами и за сокетами и перезапускать может.

Т.е потом достаточно перегрузить сервер, и все заработает ?

Достаточно перезапустить зависшего демона. Конечно если SSH не завис :)

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 2)
Ответ на: комментарий от Black_Roland

Это да, я как то читал на хайлоад сайте, на счет балансировки MYSQL, так там писали что то про мастер - слейв, т.е если одно не отвечает запросы посылаются к другому, ну вообщем там была рассказана организация балансировки баз данных. Просто у меня есть не много теории но практики пока не какой, но по мере опыта, конечно я хочу все сделать в идеальности, т.е что бы базы были на отдельном сервере, статика на отдельном, к примеру я вот заметил некоторые сайты как то делают что у них картинки находятся по адрессу img.site.com т.е как я понмаю они создали вируталхост,и обращаются к серверу где лежат эти картинки (т.е статика) Т.е получается сервер которые обрабатывает пхп, ни как не связан с картинками .

В итоге что я понял вообще из всего

1.Сервер динамика (скрипты php css, js, images)

2.Сервер баз данных master

3.Сервер баз данных slave

4.Сервер картинок (uploads) к примеру

Т.е юзер образается к серверу номер 1 а тот уже распределяет статику,базу данных. Как то так.

Но я пока хочу сделать так, у меня будет один сайт, один сервер, на сервере будут и картинки и база, но, когда все будет увеличиваться, я буду плавно переходить, к примеру создам, сервер с отдельной базой, потом с статикой (где все будут картинки uploads) ну и потом уже балансировка. (Как то так) может я где то и ошибаюсь но представляю более мение как описал

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

«Как выключен? О_о Это же обязательный параметр.»

Да да ! выключен т.е закоментирован ! я ничего не трогал.

nixbrain
() автор топика
Ответ на: комментарий от nixbrain

сайты как то делают что у них картинки находятся по адрессу img.site.com

Это может быть просто CDN, типа CloudFlare.

Еще иногда cookie free домены делают. Например сайт yahoo.com, а под статику домен yahooimg.org. Причем можно даже, чтобы этот домен вел все на тот же сервак. Смысл в том, чтобы не слать лишний раз куки на сайт (для статики куки не нужны). Так же браузеры распараллеливают запросы, и запросы к другим доменам идут отдельной очередью. В итоге статика быстрее грузится.

Сервер динамика (скрипты php css, js, images)

В идеале там должен быть только PHP. Все CSS, JS и картинки нужно хранить на сервере статики.

Black_Roland ★★★★
()
Ответ на: комментарий от Black_Roland

Вот кстати еще надо почитать на счет этог ClounFlare.

Ну а так я правильно вообще думаю об этом ?

Вот я картинку помню сохранил когда по мануалам ходил, так там примерно такое было

http://oi58.tinypic.com/b7mnvp.jpg

Перводил, не много с испанского вроде, так там писали что сначала весь траффик попадает на тучу, хакеры боты и все такое (а потом уже на сервер) ну или как то так (просто я не знаю как этот cloudflare) работает.

nixbrain
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.