Задать вопрос
@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 ? Или, может, кто более удобное решение подскажет?
  • Вопрос задан
  • 2385 просмотров
Подписаться 2 Оценить 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 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 :-)
Ответ написан
Ваш ответ на вопрос

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

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