Как получить реальный http-запрос в Tomcat за Apache? - PullRequest
0 голосов
/ 06 ноября 2018

Я использую веб-сервер Tomcat на http порту 8080. Спереди у меня есть Apache, который обрабатывает https ssl соединения.

Как узнать, отправил ли клиент запрос, используя http:// или https://? Поскольку следующее показывает http всегда, потому что Apache внутренне отправляет только Tomcat запросы http:8080. Таким образом, запрашиваемая первоначальная схема здесь потеряна.

HttpServletRequest req;
req.getRequestURL().toString(); // always shows http://....

1 Ответ

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

Apache должен добавить следующие заголовки запроса, как описано в mod_proxy docs :

  • X-Forwarded-For - IP-адрес клиента.

  • X-Forwarded-Host - Исходный хост, запрошенный клиентом в заголовке HTTP-запроса хоста.

  • X-Forwarded-Server - имя хоста прокси-сервера.

Дополнительно X-Forwaded-Proto с исходным протоколом можно добавить , как описано в этом примере :

<VirtualHost *:443>
  <strong>RequestHeader set X-Forwarded-Proto "https"</strong>
...