Рейтинг:0

Конфигурация Nginx для сопоставления подстановочного имени server_name с конкретным маршрутом Symfony

флаг bd

у меня есть приложение Symfony 5 в domain.tld с этой базовой конфигурацией nginx:

карта "$http_cloudfront_forwarded_proto:$http_x_forwarded_proto" $cloudfront_proto {
    по умолчанию "http";
    "~https" "https";
}

сервер {
    имя_сервера домен.tld;
    слушать 80 отставание=65535;

    корень /var/www/project/public;

    client_max_body_size 500M;

    место расположения / {
        # попытаться передать файл напрямую, вернуться к index.php
        try_files $uri /index.php$is_args$args;
    }

    # опционально отключите откат к PHP-скрипту для каталогов активов;
    # nginx вернет ошибку 404, если файлы не будут найдены, вместо передачи
    # запрос к Symfony (улучшает производительность, но страница 404 Symfony не отображается)
    # местоположение /комплекты {
    # try_files $uri =404;
    # }

    расположение ~ ^/index\.php(/|$) {
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        включить fastcgi_params;

        # опционально установить значение переменных окружения, используемых в приложении
        # fastcgi_param APP_ENV prod;
        # fastcgi_param APP_SECRET <идентификатор секрета приложения>;
        # fastcgi_param DATABASE_URL "mysql://db_user:db_pass@host:3306/db_name";
        fastcgi_param HTTP_X_FORWARDED_PROTO $cloudfront_proto;

        # Когда вы используете символические ссылки, чтобы связать корень документа с
        # текущая версия вашего приложения, вы должны передать реальную
        # путь к приложению вместо пути к симлинку на PHP
        # ФПМ.
        # В противном случае OPcache PHP может неправильно обнаружить изменения в
        # ваши файлы PHP (см. https://github.com/zendtech/ZendOptimizerPlus/issues/126
        # для дополнительной информации).
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        # Запрещает URI, включающие фронт-контроллер. Это будет 404:
        # http://domain.tld/index.php/some-path
        # Удалите внутреннюю директиву, чтобы разрешить такие URI
        внутренний;
    }

    # вернуть 404 для всех остальных файлов php, не соответствующих фронт-контроллеру
    # это предотвращает доступ к другим файлам php, которые вы не хотите открывать.
    расположение ~ \.php$ {
        вернуть 404;
    }

    error_log /var/log/nginx/project_error.log;
    журнал_доступа /var/log/nginx/project_access.log;
}

Мой вариант использования:

У меня есть несколько маршрутов:

/сайт/{URL-адрес сайта}
/сайт/{URL-адрес сайта}/*
/сайт/{URL-адрес сайта}/*/*
...

нравиться :

Я хочу получить доступ к этим маршрутам с URL-адресом, например

Я не хочу перенаправления, но правило перезаписи для всех URL-адресов начинается с префикса. custom.css работает.

Я пытаюсь добавить новый блок сервера с помощью этого добавления:

сервер {
    префикс имени_сервера.*;
    корень /var/www/project/public;
    слушать 80;

    client_max_body_size 100M;

    местоположение = / {
        переписать ^ /index.php/site/$host break;
    }

...

Но это совсем не сработало...

Вы можете мне помочь ? :D

Спасибо

флаг us
Что именно вы сделали, когда "это вообще не сработало..."? Какой запрос вы сделали? Какой был точный ответ?
El Lobo Blanco avatar
флаг bd
Привет, Теро. Когда я пытаюсь использовать https://prefix.domainA.tld, я получаю ошибку 404 Not Found nginx.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.