Динамическая маршрутизация на поддомене Symfony 4 и настройка Nginx - PullRequest
0 голосов
/ 12 ноября 2018

Я хочу обработать динамический поддомен в моем приложении Symfony 4.

Я ищу конфигурацию, подобную этой:

  • store1.domain.com => StoreController :: index
  • store2.domain.com => StoreController:: index
  • www.domain.com => HomeController :: homePage
  • domain.com => HomeController :: homePage и т. д. и т. д.

Я пытаюсь этот код, но не работает.Его всегда совпадают с HomeController.StoreController никогда не совпадает.

И когда я попробую эту конфигурацию, запрос «domain.com» покажет мне «Добро пожаловать в nginx!»стр.

class StoreController extends AbstractController
{
    /**
     * @Route("/", name="store_home", host="{store_name}.domain.test")
     */
    public function storeHomepage()
    {
        return $this->render('store/index.html.twig');
    }
}

class HomeController extends AbstractController
{
    /**
     * @Route("/", name="site_home")
     */
    public function homePage()
    {
        return $this->render('site/home/index.html.twig');
    }
}

А вот моя конфигурация nginx:

server {
    listen       80;
    server_name  *.domain.test;
    root       /site/root/public;

    location config bla bla bla;
}

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

В конфигурации NGINX вы можете указать несколько имя_сервера, например: имя_сервера example.org www.example.org;

Это должно работать для вас:

server {
    listen       80;
    server_name  *.domain.test domain.test;
    root       /site/root/public;

    location config bla bla bla;
}

http://nginx.org/en/docs/http/server_names.html

0 голосов
/ 12 ноября 2018

Я пытаюсь этот код, но не работает.Его всегда совпадают с HomeController.StoreController никогда не совпадает.

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

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

Попробуйте явно указать хост.

class HomeController extends AbstractController
{
    /**
     * @Route("/", name="site_home", host="domain.test")
     */
    public function homePage()
    {
        return $this->render('site/home/index.html.twig');
    }
}

И когда я попробую эту конфигурацию, запрос "domain.com" покажет мне "Добро пожаловать в nginx!"page.

Я на самом деле не эксперт по nginx, но я считаю, что server_name *.domain.test; означает все субдомены, но исключает основной домен.Попробуйте как server_name .domain.test;

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