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