mod_jk或mod_proxy

我尝试了谷歌search,唯一的文章,我发现比较这两个是从2005年到2002年。我只是build立我的第一个Tomcat实例运行Jira为我正在做一个项目。 我想通过端口80和apache代理这个。 从我可以告诉,我可以很容易地使用mod_proxy转发stream量。 使用mod_jk有什么区别? 这两个MOD有没有任何性能/安全的区别? 任何人有任何提示/经验设置转发通过Apache? 我正在运行Debian Lenny。

除非你使用mod_proxy_http否则JIRA不会正式支持把tomcat放在apache之后。 推荐的configuration是这样的

/etc/httpd/vhosts.d/jira.company.com.conf

 ... ProxyPreserveHost On <Location /> ProxyPass http://localhost:8080/ </Location> ... 

/opt/j2ee/domains/company.com/jira/tomcat/conf/server.xml

 ... <Connector address="localhost" port="8080" URIEncoding="UTF-8" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" proxyName="jira.company.com" proxyPort="80" disableUploadTimeout="true" /> ... 

这应该让你继续http ,让我知道如果你想为https的例子

免责声明:我目前是Atlassian员工,虽然我不在JIRA团队工作

两种方法都将请求从Apache转发给tomcat。 mod_proxy使用我们都知道的爱的HTTP。 mod_jk使用二进制协议AJP。 mod_jk的主要优点是:

  • AJP是一个二进制协议,所以两端处理的速度稍微快一些,与HTTP相比使用的开销略less一些,但这是最小的。
  • AJP包括原始主机名,远程主机和SSL连接等信息。 这意味着ServletRequest.isSecure()可以像预期的那样工作,并且您知道谁在连接到您并允许您在代码中执行某种虚拟主机。

一个小缺点是,AJP是基于固定大小的块,并可以打破长头,特别是长长的参数请求URL,但你应该很less有8K的URL参数的位置。 (这会表明你做错了:))

由于mod_proxy_ajp的存在,位置稍微复杂一些。 在他们之间,mod_jk是两者中较为成熟的,但mod_proxy_ajp与其他mod_proxy模块在相同的框架中工作。 我还没有使用mod_proxy_ajp,但将来会考虑这样做,因为mod_jk涉及Apache之外的configuration。

给出一个select,我宁愿一个基于AJP的连接器,主要是由于我的第二个优势,比性能方面更多。 当然,如果Atlassian不支持除mod_proxy_http之外的其他任何东西,那么它的确有点牵强,但是mod_jk可以和JIRA一起工作。

是的,有一些差异。 但是,您select使用的将取决于您的应用程序。

作为一个例子, mod_proxy将作为一个普通的反向代理,它只会转发正常的头文件,而mod_jk将作为一个特殊的连接器,不仅转发正常的头文件,而且转发其他的环境variables。 一个比喻可以被绘制到scgifastcgi连接器。

为了使用JSP,您应该使用它为其devise的mod_jk 。 转发到常规Web服务器时,只能使用mod_proxy (可能会启动其他ajp连接器)。

 [front apache]---proxy---[back apache]---ajp---[tomcat] | +--------- ajp----[tomcat] 

希望这可以帮助。

mod_proxy将真正使用正常的http连接器“代理”到tomcat的所有请求。

mod_jk打开与tomcat服务器的“ajp13”连接,与常规的tomcat http连接器分开,并通过这种方式传递stream量。