Tomcat如何设置代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Tomcat如何设置代理相关的知识,希望对你有一定的参考价值。

是这样的情况,我自己的电脑无法直接访问数据库,我使用代理软件Proxifier通过代理主机让我的PLSQL Developer访问数据库,现在我用Tomcat部署了一个Web应用,这个应用也需要访问数据库,但因为我的电脑无法直接访问数据库导致这个应用启动不了,我尝试将Tomcat的tomcat5.exe和tomcat5w.exe加入到Proxifier规则中,但不起作用。

我想知道Tomcat是否有办法设置代理,使其能通过代理主机访问数据库?

tomcat设置代理的方法:
在server.xml文件中增加以下节点:
port
Connector创建server socket并等待连接的TCP端口号。操作系统在特定的IP地址上只允许一个服务器应用程序监听特定的端口。

protocol
为了使用HTTP处理器,该属性值必须为HTTP/1.1(缺省值)

proxyName
如果connector在代理配置中使用,将这个属性设置成调用request.getServerName()时返回的服务器名称。更多信息参考代理支持。

proxyPort
如果Connector在代理配置中使用,这个属性指定了调用request.getServerPort()返回的端口值。更多信息参考代理支持。

Configure your copy of Apache so that it includes the mod_proxy module. If you are building from source, the easiest way to do this is to include the --enable-module=proxy directive on the ./configure command line.
If not already added for you, make sure that you are loading the mod_proxy module at Apache startup time, by using the following directives in your httpd.conf file:

LoadModule proxy_module path-to-modules/mod_proxy.so
AddModule mod_proxy.c

Include two directives in your httpd.conf file for each web application that you wish to forward to Tomcat 6. For example, to forward an application at context path /myapp:

ProxyPass /myapp http://localhost:8081/myapp
ProxyPassReverse /myapp http://localhost:8081/myapp

which tells Apache to forward URLs of the form http://localhost/myapp/* to the Tomcat 6 connector listening on port 8081.
Configure your copy of Tomcat 6 to include a special <Connector> element, with appropriate proxy settings, for example:

<Connector port="8081" ...
proxyName="www.mycompany.com"
proxyPort="80"/>
参考技术A 一般都是在你的应用中设置代理啊,Tomcat是接收服务的,怎么设置代理呢?
一般要在你的连接代码前面,加上下面的设置。(如果用了其他的开源框架如httpclient,设置会有不同,请自行谷歌)

System.getProperties().setProperty("proxySet", "true")); System.getProperties().setProperty("http.proxyHost", "X.X.X.X")); System.getProperties().setProperty("http.proxyPort", "XX");本回答被提问者采纳

apache代理到tomcat保持活力混乱

【中文标题】apache代理到tomcat保持活力混乱【英文标题】:apache proxy to tomcat keep alive confusion 【发布时间】:2010-12-19 17:49:09 【问题描述】:

我在 tomcat 6 服务器前面有一个 apache 2.2 服务器。在 apache 上使用 mod_proxy_ajp 代理对 tomcat 的请求。非常标准的设置。

如果我需要禁用浏览器的保持连接,我该怎么做?

我需要禁用 keep-alive http 请求,因为我怀疑我的一些用户的防火墙可能会丢弃非活动的 keep-alive 连接,这会随机导致问题。

在 apache 和 tomcat 上都有各种“保持活动”的配置。

httpd.conf 有“KeepAlive Off”(在我的情况下似乎没有什么不同)

同样在设置 ProxyPass 的 httpd.conf 中,您可以有一个参数“keepalive”,但这仅在我的 apache 和 tomcat 之间存在代理/防火墙时才有用,在我的情况下没有代理/防火墙,并且是不是问题。

Tomcat 本身,http 连接器有“keepAliveTimeout”和“maxKeepAliveRequests”,但这仅适用于 http 连接器。

tomcat ajp 连接器也有一个“keepAliveTimeout”,但这是针对来自 apache 的 ajp 请求,不确定这是否应该/流向从浏览器到 apache 的真实 HTTP 请求。

最重要的是,还有 HTTP1.0 与 HTTP1.1 的区别。

所以它变得令人困惑......有人可以解释一下吗?

【问题讨论】:

我想知道你为什么要禁用保活功能。 【参考方案1】:

有(至少)四个“保活”。

    客户端浏览器和 Apache 之间的 HTTP 层保持活动。 (在 HTTP/TCP 连接中启用多个客户端请求。要配置“KeepAlive”指令。)

    客户端浏览器和 Apache 之间的 TCP 层保持活动。 (为了避免连接被防火墙关闭,请定期发送空包(Linux默认2小时左右)。我不知道如何在Apache中配置。)

    Apache 和 Tomcat 之间的 AJP 层保持活动。 (在 AJP/TCP 连接中启用多个 Apache 请求。要配置“ProxyPass”的“max”和“smax”选项。)

    Apache 和 Tomcat 之间的 TCP 层保持活动。 (与 2 相同,但用于 Apache 和 Tomcat 之间的防火墙。要配置“ProxyPass”指令的“keepalive”选项。)

因此,您的配置(“KeepAlive off”)可能适用于客户端和 Apache 中的防火墙。对“LogFormat”指令使用“%X”来检查是否禁用了keep-alive(上述类型1)。

顺便说一句,我认为当“KeepAliveTimeout”不是那么大时,防火墙关闭连接不会造成严重问题。 如果您没有问题(除了警告消息),我认为您可以原样离开。

【讨论】:

以上是关于Tomcat如何设置代理的主要内容,如果未能解决你的问题,请参考以下文章

使用nginx反向代理tomcat集群

动态代理实现设置tomcat请求编码

如何开启apache虚拟目录反向代理

nginx反向代理tomcat8和php7(四)

apache代理到tomcat保持活力混乱

Confluence 6 代理和 HTTPS 设置连接器