2015-03-11 10 views
1

У меня есть веб-приложение, пружинно-загрузочную со встроенным котом, работающий на порту 28081 и HTTPd настроен на проксирование так:Как получить оригинальный запрос URI в EL пружинными загрузки страницы за HTTPd ProxyPass

ProxyPass/http://localhost:28081/ 
ProxyPassReverse/http://localhost:28081/ 

Затем на странице JSP Мне нужно передать полный запрос URL в SilverLight виджета, но

${pageContext.request.serverName}:${pageContext.request.serverPort} 

будет решать http://localhost:28081.

Поэтому я думал положиться на X-Forwarded-Host, но бывают случаи, когда он содержит более одного прокси-адреса, разделенных запятой. Я не уверен, что можно доверять, что порядок адресов будет сохранен.

Есть ли лучший способ сделать это, будь то в jsp, в конфигурации httpd или в коде контроллера?

ответ

3

В контроллере вы можете использовать ServletUriComponentsBuilder: инициализировать его из запроса, и он выбирает заголовки прокси-сервера и создает URI для источника для вас, например. String uri = ServletUriComponentsBuilder.fromCurrentRequest().build().toString().

0

Вы можете использовать ProxyPreserveHost в своей конфигурации httpd, чтобы сохранить исходный заголовок Host, то есть ваше внешнее доменное имя, но я не могу придумать хороший способ передать порт.