【问题标题】:secure AJP connector not rendering安全 AJP 连接器不呈现
【发布时间】:2017-02-18 00:18:10
【问题描述】:

我们在与 ajp 连接器链接的 apache Web 服务器后面有一个 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 中定义的端口呈现安全连接器?

【问题讨论】:

  • "scheme" 和 "secure" 实际上并没有改变 ajp 连接,它只会改变你的 tomcat 看到的这个请求的 url。如果您在 apache 上终止 ssl,那么您可以将其发送到内部的常规 ajp 端口。唯一可能阻止您这样做的是,如果应用程序明确关心请求的“isSecure”方法或 url 的返回值。一些应用程序确实...

标签: java spring tomcat ajp hybris


【解决方案1】:

恐怕你得在配置目录的server.xml模板中手动声明。

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

事实上,下面是我使用的 config/tomcat/conf/server.xml 的 sn-p,它是我在 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 deploy 任务在平台 tomcat 目录中构建实际的 server.xml 时,它们会在构建时替换它们。

【讨论】:

  • 谁能判断在 2018 年使用 Http11NioProtocol 是否仍然是最佳实践?
【解决方案2】:

我认为你应该尝试:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-26
    • 2012-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多