Задать вопрос

Как грамотно «переехать» на Nginx+Apache?

Привет всем!
Такое дело, есть веб сервер с Apache на котором хостятся 100+ небольших сайтиков, вдруг понадобилось поставить перед Apache , "Nginx", чтобы он (Nginx) раздавал статику. Вопрос в том, что это, мне сейчас на nginx создавать эти 100+ виртуальных хостов, чтобы он разруливал все это? Может есть уже опыт у кого-нибудь, по запоздалому апгрейту веб сервера?
  • Вопрос задан
  • 884 просмотра
Подписаться 7 Оценить Комментировать
Решения вопроса 1
dimonchik2013
@dimonchik2013
non progredi est regredi
ну а как иначе? 80й - то порт один, не поделишь

1) ставишь nginx на 8080 или 81 или какой хочешь
2) ручками пишешь все конфиги в один файл или бьешь его на части как угодно в папке sites-enabled (необязательно по именам доменов называть, но, понятно, что так проще поддерживать), но по-быстрому можно и в одну простыню копипаст
3) в конфигах прописываешь откуда дергать статику каждому домену и прокси на Апач
4) тестируешь, меняешь порты с Апачем местами
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
В конфиге апача можно использовать переменные. К примеру в качестве пути к сайту использовать /var/www/+имя хоста/log|data|www
Ответ написан
Комментировать
nops
@nops
Системный инженер.
Тебе придется прописывать каждому сайту конфиг. Можно написать небольшой скрипит на bash, скормить ему образец, по которому он будет формировать основной коняги(или несколько, по именам сайтов). Скрипт написать, потребуется минут 10-15 от силы, а руками переписывать каждый конфиг, куда дольше. Да еще и запутаться просто и ткнуть не то.
логика такая:
1. Запускаешь парсинг конфига апача, выдергиваешь из него имена сайтов и складываешь во временный файлик $file=/tmp/$RANDOM
2. Запускаешь цикл, в котором опрашиваешь созданный файл $file и считываешь построчно каждый сайт, записывая в переменную, скажем $domainname.
3 внутри цикла, копируешь содержимое исходного файла конфига nginx с заменой определенного выражения внутри конфига, скажем DOMAIN_NAME, на значение переменной $domainname.
Подготовительные работы: Создание исходного конфига, внутри которого вместо адреса сайта добавлено кодовое слово, скажем DOMAIN_NAME, которое мы впоследствии, с помощью sed сможем заменить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы