Получить номер порта на стороне клиента в Symfony для запроса, отправляемого через переадресацию локального порта SSH

Это может не относиться к Symfony, так как номер порта на стороне клиента не виден в $_SERVER суперглобальный.

Иногда я использую переадресацию локального порта SSH для предварительного просмотра приложения AWS ElasticBeanstalk, которое находится в частной подсети (недоступно из Интернета).

 $ ssh -L 8088:helloworld.eu-west-1.elasticbeanstalk.com:80 bastion

Где bastion Хост находится в общедоступной подсети и может делать HTTP-запросы к серверам в частной подсети.

Когда я запускаю эту команду, я могу посетить сайт по адресу http://localhost:8088/

Это работает хорошо, если часть сайта не требует номер порта — по крайней мере, в Symfony в любом случае. Когда часть сайта вызывает 403 Запрещенный ответ из-за необходимости аутентификации, Symfony выполнит перенаправление на страницу входа, используя Symfony\Component\Security\Http\HttpUtils::createRedirectResponse(),

Он пытается перенаправить на URL с помощью $requst->getSchemeAndHttpHost() в качестве базы. Однако это удаляет номер порта, так как он определил порт как 80 вместо 8088,

Осматривая $_SERVER Значение в Xdebug показывает:


HTTP_X_FORWARDED_PORT = 80
HTTP_X_FORWARDED_FOR = 10.0.0.48
HTTP_HOST = localhost
SERVER_PORT = 80
SERVER_ADDR = 10.0.2.70
REMOTE_PORT = 44348
REMOTE_ADDR = 10.0.3.215

Номер порта 8088 в исходном запросе нигде не видно.

1

Решение

Symfony (на самом деле Webserver) не может получить ваш локальный адрес, есть 2 возможных способа решения проблемы:

  1. Сделайте частную сеть доступной через обратный прокси на общедоступной.
  2. Настройте обратный прокси-сервер на своей рабочей машине (например, nginx), чтобы он принимал запросы на workproject.local домен, добавьте заголовки, как X-Forwarded-For а также X-Real-Ip на входящие запросы и передать эти запросы через туннель.

В любом случае вам также необходимо настроить Symfony для работы с обратным прокси-сервером, для получения дополнительной информации прочтите официальные документы:
Как настроить Symfony для работы за балансировщиком нагрузки или обратным прокси

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]