安全 AJP 连接器不呈现

secure AJP connector not rendering

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

在 hybris tomcat 配置文件夹中 server.xml:

${tomcat.connectors.ajp.plain}

在平台上对 ant clean 进行渲染 server.xml

<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 中定义的端口呈现安全连接器?

我认为你应该试试:

<Connector
 protocol="AJP/1.3"
 port="8010"
 connectionTimeout="20000"
 scheme="https"
 SSLEnabled="true"
 secure="true"
 maxThreads="200"
 proxyPort="443"/>

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

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

事实上,下面是我使用的 config/tomcat/conf/server.xml 的一个片段,我在 Hybris 上开发了 7 年多.它不仅具有合理的配置,还使用了性能更高的非阻塞 IO 协议。

希望对您有所帮助。

<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 时,它们在构建时被替换。