Symfony - Как установить префикс URL при использовании прокси

Я пытаюсь установить глобальный префикс для приложения symfony для запуска приложения за обратным прокси.

URL-адрес прокси-сервера: http://proxy.example.de/ski

Локатон / лыжи вызывают проблемы.

Я использую Symfony 4, конфигурация, указанная в документации, не работает:

parameters:
    router.request_context.host: www.fakedomain.com
    router.request_context.scheme: http
    router.request_context.base_url: fakedirectory

Приложение работает на apache, прокси тоже apache. Я попытался установить route_prefix в annotation.yaml, который не решает проблему с активом и вызывал другие проблемы.

Заранее спасибо.

Редактировать: Пример маршрута контроллера

class DashboardController extends AbstractController
{
    /**
     * @Route("/", name = "dashboard")
     *
     * @param EntityManagerInterface $em
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function index(EntityManagerInterface $em)

Какая у вас маршрутизация?

treyBake 09.07.2018 10:16

Что ты имеешь в виду ? Маршруты создаются с помощью аннотаций внутри контроллера.

WhiteRabbit 09.07.2018 10:19

тогда мы можем увидеть контроллер? :)

treyBake 09.07.2018 10:20

Конечно, но я сомневаюсь, что в этом проблема. Как я уже сказал, я мог бы установить глобальный префикс в annotations.yaml, и это решило бы проблему маршрутизации. Но тогда у меня все еще возникают проблемы с моими активами. Я добавил маршрут в свой пост.

WhiteRabbit 09.07.2018 10:30
/ski - это не маршрут? в чем собственно ошибка? 404?
treyBake 09.07.2018 10:32

/ ski - это расположение на прокси. Symfony считает это параметром, а proxy.example.de - базовым путем. Но base_url / путь приложения будет proxy.example.de/ski.

WhiteRabbit 09.07.2018 10:37

это приложение в приложении? или конечный пользователь всегда будет переходить на proxy.example.de/ski?

treyBake 09.07.2018 10:47

Это единое приложение. Мы просто используем обратный прокси-сервер для размещения нескольких приложений (symfony, springboot, python) под одним и тем же URL-адресом, например «portal.example.de». Затем это адреса / application1, / application2, / ski. Итак, для моего приложения Symfony корнем контекста всегда является proxy.example.de/ski

WhiteRabbit 09.07.2018 10:48

тогда почему бы не установить корень документа как /ski? Если сайт всегда будет работать через /ski/*, тогда просто установите базовый URL как таковой?

treyBake 09.07.2018 10:50

Что значит где ставить? На прокси, хосте или в приложении? Если это рабочее решение, я бы с удовольствием это сделал :-)

WhiteRabbit 09.07.2018 10:56

Так же, как и приложение, маршрут вашей панели управления будет /ski - тогда все, что находится после, может использовать {ski}/* в качестве URL-адреса и установить значения по умолчанию для лыж на /ski.

treyBake 09.07.2018 10:57

Я уже пробовал это. Это похоже на установку префикса с / ski для всех маршрутов. Тогда у меня все еще есть проблема с моими активами.

WhiteRabbit 09.07.2018 11:00

но если задан documentroot, то он идет из / public no?

treyBake 09.07.2018 11:02

Думаю, я тебя неправильно понял. Не могли бы вы объяснить, что вы имели в виду, устанавливая корень документа на лыжу?

WhiteRabbit 09.07.2018 11:11

Итак, в вашем файле vhost / nginx conf - вы должны установить корень документа как example.com/ski, тогда вы можете просто использовать это - в качестве альтернативы вы можете использовать маршрутизацию, чтобы установить все на /ski, тогда ваша общая папка не является проблемой, потому что URL-адрес будет по-прежнему читать /public/* как общедоступную папку Assest

treyBake 09.07.2018 11:13

Я не могу заставить работать корневое решение документа. Если я установил что-нибудь еще, то URL-адрес общей папки (/ var / www / sf4 / public) ничего не нашел. Есть идеи, что я делаю не так?

WhiteRabbit 09.07.2018 13:59

Любое решение? У меня та же проблема. symfony-app1 слушает x.x.x.x:7071/, а symfony-app2 слушает x.x.x.x:7072/ - я использую caddyserver для маршрутизации example.com:443/app1 на один сервер и example.com:443/app2 на другой. С помощью директивы without для caddy я могу перейти на нужную страницу в symfony. Например, /app1 конвертируется в /, а app1/someThing запрашивается как /someThing. Но если приложение 1 отвечает ссылкой на /someThing, я все равно не могу преобразовать его обратно в /app1/someThing после ответа обратного прокси.

Xavi Montero 08.08.2019 18:04
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
17
398
0

Другие вопросы по теме