栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Tomcat 9连接器如何侦听Win的127.0.0.1反向代理。具有私有ServerName的Apache 2.4

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Tomcat 9连接器如何侦听Win的127.0.0.1反向代理。具有私有ServerName的Apache 2.4

我找到了解决方案:

在我的Tomcat server.xml中,我需要编辑http连接器并添加其他属性:

proxyName="my.server.domain"

因此它显示为:

<Connector port="8080" address="127.0.0.1" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" proxyPort="80" proxyName="my.server.domain" />

这允许由tomcat托管的spring mvc webapp构造类似于以下内容的url:

http://my.server.domain/acme

代替:

http:// localhost / acme

========================================

缺少属性:proxyName =“ my.server.domain” —时发生的问题是:

Tomcat上托管的spring mvc webapp正在构造用于处理请求的url,并询问Tomcat:“您的服务器名是什么?”
-Tomcat答复“本地主机”(Tomcat从Apache代理接收请求的值)。因此,spring在构造类似于以下内容的网址时使用了“ localhost”:
http:// localhost / acme

前端的Apache代理从Tomcat响应(从spring mvc
webapp响应)接收这些URL,而Apahe代理正在将最终用户客户端的URL转到以下网址: http:// localhost /
acme 最终用户客户端肯定可以没有在本地计算机上托管该Web应用程序-
因此浏览器向他们提供了:HTTP错误404

========================================

可以从apache代理配置中清楚地看到这一点:

ProxyPass         /acme  http://localhost:8080/acmeProxyPassReverse  /acme  http://localhost:8080/acme

Apache将请求中包含“
localhost”的URL发送给tomcat。Tomcat连接器响应必须为Apache指定真实的proxyName(而不是localhost),该名称应返回给客户端。

========================================

Tomcat连接器文档:

  • proxyName

如果在代理配置中使用了此连接器,请配置此属性以指定要为调用request.getServerName()返回的服务器名称。有关更多信息,请参见代理支持。

代理支持

当Tomcat在代理服务器后面运行时,可以使用proxyName和proxyPort属性。这些属性修改返回给Web应用程序的值,这些Web应用程序调用request.getServerName()和request.getServerPort()方法,这些方法通常用于构造用于重定向的绝对URL。如果不配置这些属性,则返回的值将反映接收到来自代理服务器的连接的服务器名称和端口,而不是客户端将原始请求定向到的服务器名称和端口。*

===========================================

如果您有像spring
mvc这样的Web应用程序正在构造url,那么很多在线博客(提到如何使tomcat连接器仅在127.0.0.1上侦听)都没有解释必须在proxyPort之外设置proxyName。您正在使用apache
mod代理将localhost的请求URL发送到Tomcat。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376980.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号