【问题标题】:How to get real http request in Tomcat behind an Apache?如何在 Apache 后面的 Tomcat 中获取真正的 http 请求?
【发布时间】:2018-11-06 16:30:05
【问题描述】:

我在 http 端口 8080 上运行 Tomcat 网络服务器。在前面,我有一个处理 https ssl 连接的 Apache。

我如何知道客户端是使用http:// 还是https:// 发出请求的?因为下面总是显示http,因为Apache内部当然只向Tomcat发送http:8080请求。所以最初请求的方案在这里丢失了。

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

【问题讨论】:

  • 记录请求头,看看有没有什么。
  • 句柄https 连接 是什么意思?你将他们重定向到http?
  • 是的,它内部重定向到http。

标签: java apache tomcat


【解决方案1】:

Apache 应添加以下请求标头,如 mod_proxy docs 中所述:

  • X-Forwarded-For - 客户端的 IP 地址。

  • X-Forwarded-Host - Host HTTP 请求标头中客户端请求的原始主机。

  • X-Forwarded-Server - 代理服务器的主机名。

另外X-Forwaded-Proto可以加上原协议as explained in this example:

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

【讨论】:

猜你喜欢
  • 2020-02-01
  • 2011-07-11
  • 2014-07-04
  • 2015-08-11
  • 1970-01-01
  • 2015-07-10
  • 1970-01-01
  • 2015-04-12
  • 1970-01-01
相关资源
最近更新 更多