首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用apache2作为tomcat8的代理时保留客户端ip

问如何在使用apache2作为tomcat8的代理时保留客户端ip
EN

Stack Overflow用户
提问于 2018-03-30 15:06:27
回答 1查看 2.3K关注 0票数 3

我有一个Apache2服务器,它除了承载一些其他内容外,还在localhost:8080将Tomcat8服务器上的https转换为http :8080,它正在运行一个spring引导应用程序。为此,我们将在网站中使用下面的配置-可用

代码语言:javascript
复制
    ProxyPass / http://0.0.0.0:8080/
    ProxyPassReverse / http://0.0.0.0:8080/

一切都在为我们工作。直到我们观察到我们无法记录客户端IP,因为我们错过了一个明显的原因。由于我们的请求现在是由apache2代理的,所以我们作为客户端ip接收127.0.0.1。现在,我们如何确保我们正在接收有效的客户端ip,就像我们之前没有使用apache2作为代理服务器时的情况一样。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-30 15:31:39

解决此问题需要代理在转发前将主机信息保存在X转发的请求头中。在Apache2中,通过添加

代码语言:javascript
复制
ProxyPreserveHost On

以及conf中对应的VirtualHost配置的其他信息。可以通过在日志中添加X转发-For标头来验证这一实现。在Apache2中,您必须编辑/etc/apache2/apache2.conf for LogFormat,如下所述:

如何配置Apache服务器来记录客户端的公共IP地址

在/var/log/apache2/access.log上观察X转发- for标头的日志.

一旦您确定了这一点,您现在可以配置Tomcat8来配置/etc/tomcat8/server.xml中的阀门,如描述这里

或者简单地添加:

代码语言:javascript
复制
   <Valve className="org.apache.catalina.valves.RemoteIpValve"  internalProxies="127.0.0.1" remoteIpHeader="x-forwarded-for" />

我希望这会对其他人有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49576782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档