Всем привет! Есть у меня несколько сайтов, которые лежат на разных непонятных хостингах. Решил все их собрать на одном VPS-сервере. До этого у меня там лежал один сайт и проблемы с разделением хостов не было. Всё лежало по-умолчанию в /var/www/html/. И вот теперь мне нужно расположить несколько сайтов, и для каждого, чтобы был отдельный админ. Почитал про mpm-itk и mpm-prefork. Есть вопросы: 1. Прочитал, что использование данных модулей повышает риск взлома. Так ли это? 2. Какой из этих модулей выбрать? 3. Есть ли какие-нибудь альтернативные варианты? Всем спасибо
Криворукий администратор повышает риск взлома, а не модули. Хочешь свести на ноль риск взлома - выключи сервер. В противном случае, штудируй источники и знай, что делаешь. Если тебе прям изоляция нужна, то mpm-itk. Там под капотом тот же prefork, собсна, только обмазанный политиками доступа драконовскими. Ну и да, ты ведь поставишь перед апачем nginx, да?
Вот по больному прям Ну раз ты про это написал, то точно буду делать. Хотя тема эта для меня новая и я пока еще плохо понимаю все приемущества связки apach + nginx.
Это потому, что ты не вникал, как в принципе работает веб-сервер. И не задумывался о том, как у тебя страница грузится. Думаешь, одна страница - это один запрос? Окей. Открой страничку своего сайта, а потом открой access-логи апача(если они у тебя включены, конечно). И ужаснись от того, сколько запросов к нему ты послал, открывая одну-единственную страничку. У тебя там будет, грубо, один запрос к PHP. И еще с десяток ко всяким css, js, картиночкам, иконочкам, шрифтикам. Так вот, PHP_mod это просто модуль апача. То есть, процесс апача, обрабатывающий десяток css, js, картиноки ничем не отличается от процесса, обрабатывающего запрос к PHP. И все бы ничего, но процессы апача очень дорого стоят. А теперь давай сравним размер данных, полученных от PHP в сравнении с картиночками теми же. Картиночка окажется чуть ли не на порядок тяжелее текста, отданного пыхой. А теперь, внимание, допустим, у меня мееедленный клиент. Мобилка на edge. Или Хром с включенным троттлингом в отладчике. И я тяну ответы от тебя меееееееедленно. И вот процесс апача, дорогой и лимитированный, вместо того, чтобы лопатить PHP со скоростью света(а это он умеет, я гарантирую), отдает по байтику картиночку мне... Не выполняя другой работы. Потому что не может. Посчитай, сколько у тебя процессов разрешено апачу поднимать? Ставлю, что не более десятка. Пара-тройка медленных запросов даже от одного человека тут же выжрут процессы твоего апача, а если он, аварийно, начнет плодить новые, у тебя ляжет сервер под нагрузкой. А теперь представь, что все запросы из внешнего мира принимает легкий простенький сервер, который не умеет ни в какие крутые прям фичи, в том числе не умеет в PHP, но, за счет этого, может оперировать кучей потоков в рамках одного процесса? И умеет в параллельном режиме отдавать что угодно. Но, так как PHP он сам не умеет обрабатывать, он будет прокидывать запрос апачу. Потом забирать его ответ и отдавать как статику обычную. В итоге тяжелый апач будет заниматься только тем, чем должен - молниеносной обработкой динамики на php. А картиночки, css, js, это все будет отдавать параллельными потоками легковесный nginx. Как бонус - даже если отдаваемая страница сама по себе тяжелая, нам все равно не страшен медленный клиент. Ведь клиентом апача будет nginx. Он мгновенно получит от него ответ, а потом, без напряга, будет хоть по байту в секунду, но отдавать его клиенту. А апач тем временем еще кучу запросов перелопатить успеет.
@Fell-x27, то есть как я понял весь фронтэнд мы вешаем на nginx, а бэк работает на апаче? Буду пробовать. Спасибо
Ну...наверное, смотря, что ты в эти слова вкладываешь, так как с ними та еще путаница терминологическая. На деле это называется так - на nginx идет вся статика. А на apache динамика.