@myLizzarD
PHP developer

Как правильно настроить несколько проектов с одинаковым доменным-именем но разными «суффиксами» (nginx)?

Есть сервер, на нем стоит nginx. На сервере находятся около 10 проектов(все на symfony2), все они должны быть доступны по одному доменному имени, но с разными "суффиксами", например:
доменное имя - example.com
адрес первого проекта - example.com/project1/
адрес второго проекта - example.com/project2/
...
Сам nginx я настроил, чтобы так работало, но всплывает одна большая неудобная ситуация:
теперь во всех вьюшках и темплейтах приходится при генерации прибавлять этот суффикс, типа /project1/bla/bla/bla. Чтобы все было по феншую - приходится в параметры закидывать значение этого суффикса и во все местах его приклеивать, а если css содержит линки на ресурсы - так это вообще ужас получается.

Может быть есть какой способ в nginx переписать внутреннюю переменную для каждого проекта, чтобы ссылки /bla/bla/bla по умолчанию вели на example.com/project{number}/bla/bla/bla ? Или, может, кто более удобное решение подскажет?
  • Вопрос задан
  • 2378 просмотров
Пригласить эксперта
Ответы на вопрос 1
Wendor
@Wendor
nodejs developer / *nix admin
Вот смотрите, например у вас в exmple.com/project1/main.css есть ссылка на картинку /bla/bla/bla.jpg. Это значит что у вас ссылка exmple.com/bla/bla/bla.jpg. Nginx никак не определит, к какому проекту ее отнести. Так что, поставленную задачу средствами nginx не реализовать. Для решения проблемы, можно использовать только относительные ссылки вида bla/bla/bla.jpg.
Либо можно добавлять к ссылкам какой-нибудь get параметр /bla/bla/bla.jpg?project=project1, а в nginx'е при обнаружении параметра делать root /project1, но это тот еще геморрой.

Если же вы хотите чтобы nginx переписывал ссылки перед тем как отдать страницу клиенту (чтобы /bla/bla/bla.jpg заменял на /project1/bla/bla/bla.jpg) , то об этом тоже можно забыть. Нужно будет обучить веб-сервер ccs'у, js'у и html'у... разбираться в коде страниц и автоматом заменять. Это практически нереально.

upd: Безумная мысль... при запросе, nginx'ом парсить строку referer на предмет ^/project1, и в случае успеха дописывать делать реврайт на этот самый project1 :-)
Ответ написан
Ваш ответ на вопрос

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

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