gpt4 book ai didi

java - 安全 AJP 连接器不呈现

转载 作者:行者123 更新时间:2023-11-28 22:28:55 37 4
gpt4 key购买 nike

我们在与 ajp 连接器链接的 apache 网络服务器后面有一个 hybris 服务器。这是完美的,但是由于某种原因,在更新到 hybris 5.3(和 tomcat 7)之后,安全的 ajp 连接器没有呈现。

在 hybris tomcat 配置文件夹中,我们在 server.xml 中有这个:

${tomcat.connectors.ajp.plain}

在平台 server.xml 中,在 ant clean 上呈现所有内容

<Connector  protocol="AJP/1.3"  port="8009" proxyPort="80" redirectPort="443" />

这适用于非安全连接,但我们还需要呈现安全连接器:

<Connector protocol="AJP/1.3" port="8010" proxyPort="443" scheme="https" secure="true" />

我可以将它硬编码到 server.xml 中,但这似乎不是最好的方法。而且我找不到 ${tomcat.connectors.ajp.plain} 实际呈现的位置。某处是否有类似的属性将使用 local.properties 中定义的端口呈现安全连接器?

最佳答案

恐怕您必须在配置目录中的 server.xml 模板中手动声明它。

事实上,我更喜欢对两个 AJP 连接器执行此操作,因为由您提到的变量注入(inject)的模板化连接器配置不是很好,因此我看到了严重的性能问题。例如,未指定线程数,并且它与执行程序无关。这意味着在大负载下, Activity 线程的数量可能会增长到一个愚蠢的数字,并导致整个事情崩溃。

事实上,下面是我使用的 config/tomcat/conf/server.xml 的一个片段,它是我在 Hybris 上专门工作超过 7 年的时间开发的。它不仅具有合理的配置,而且还使用了性能更高的非阻塞 IO 协议(protocol)。

希望这对您有所帮助。

<Executor   name="hybrisExecutor"
namePrefix="hybrisHTTP"
maxThreads="${tomcat.maxthreads}"
minSpareThreads="${tomcat.minsparethreads}"
maxIdleTime="${tomcat.maxidletime}"/>

<Connector port="${tomcat.http.port}"
maxHttpHeaderSize="8192"
maxThreads="${tomcat.maxthreads}"
protocol="org.apache.coyote.http11.Http11NioProtocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="${tomcat.acceptcount}"
connectionTimeout="20000"
URIEncoding="UTF-8"
disableUploadTimeout="true" />

<Connector port="${tomcat.ssl.port}"
maxHttpHeaderSize="8192"
maxThreads="${tomcat.maxthreads}"
protocol="org.apache.coyote.http11.Http11NioProtocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="${tomcat.acceptcount}"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8"
SSLEnabled="true"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol="TLS"
keystoreFile="${catalina.home}/lib/keystore"
keystorePass="123456" />

<!--
We explicitly declare the AJP connectors as we want to separate HTTP and SSL traffic and the default connector setting Hybris provides is not good enough.
-->
<Connector protocol="org.apache.coyote.ajp.AjpNioProtocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="${tomcat.acceptcount}"
connectionTimeout="120000"
maxThreads="${tomcat.maxthreads}"
port="${tomcat.ajp.port}"
proxyPort="${proxy.http.port}"
redirectPort="${proxy.ssl.port}"
URIEncoding="UTF-8"
useIPVHosts="${tomcat.ajp.useipv}" />

<Connector protocol="org.apache.coyote.ajp.AjpNioProtocol"
executor="hybrisExecutor"
enableLookups="false"
acceptCount="${tomcat.acceptcount}"
connectionTimeout="120000"
maxThreads="${tomcat.maxthreads}"
port="${tomcat.ajp.secureport}"
proxyPort="${proxy.ssl.port}"
redirectPort="${proxy.http.port}"
scheme="https"
secure="true"
URIEncoding="UTF-8"
useIPVHosts="${tomcat.ajp.useipv}" />

变量只是您在 local.properties 中声明的属性。当 ant 部署任务在平台 tomcat 目录中构建实际的 server.xml 时,它们在构建时被替换。

关于java - 安全 AJP 连接器不呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30130796/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com