JBoss 5.1.0.GA - 重定向到端口 443 不工作,总是被重定向到 8443
JBoss 5.1.0.GA - Redirect to port 443 not working, always get redirected to 8443
我在设置从 8080 到端口 443 的重定向时遇到问题。
场景如下:
我有一个负载均衡器,监听端口 80 和 443。
所有对端口 80 的请求都被转发到负载均衡器后面主机上的端口 8080。
所有对端口 443 的请求都转发到负载均衡器后面主机上的端口 8443。
当请求到达端口 http://address.com 时,它正在使用负载平衡器上的端口 80 和主机上的端口 8080,这里一切正常。
重定向现在应该指向 https://address.com:443, but instead points to https://address.com:8443,负载均衡器不理解,因此请求终止。
我也尝试将 https 连接器的 https 端口更改为 443(不知道端口信息的来源)但没有效果,仍然使用端口 8443。
有人知道我需要更改什么以允许 80 -> 8080 ==> 443 -> 8443 吗?
提前致谢
这里是 server.xml HTTP 连接器:
<Connector protocol="HTTP/1.1"
port="8080"
address="${jboss.bind.address}"
connectionTimeout="20000"
redirectPort="443"
compression="2048"
compressableMimeTypes="text/html,text/xml,text/plain,text/css,text/javascript"
URIEncoding="UTF-8"/>
此处对应的HTTPS连接器:
<Connector protocol="HTTP/1.1"
SSLEnabled="true"
port="8443"
address="${jboss.bind.address}"
compression="2048"
compressableMimeTypes="text/html,text/xml,text/plain,text/css,text/javascript"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol = "TLS"
... keystore stuff ...
/>
以及来自 web.xml
的机密块
<security-constraint>
<web-resource-collection>
<web-resource-name>Security Required</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
我通过谷歌搜索网络找到了解决方法(丢失了我在 :( )
上找到的实际页面
在 server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml 中是对重定向端口进行的 xsl 转换:
<xsl:when test="(name() = 'redirectPort')">
<xsl:attribute name="redirectPort">
<xsl:value-of select="$portHttps" />
</xsl:attribute>
</xsl:when>
将其注释掉(将其更改为):
<!--
<xsl:when test="(name() = 'redirectPort')">
<xsl:attribute name="redirectPort">
<xsl:value-of select="$portHttps" />
</xsl:attribute>
</xsl:when>
-->
现在重定向正确。
我在设置从 8080 到端口 443 的重定向时遇到问题。
场景如下: 我有一个负载均衡器,监听端口 80 和 443。 所有对端口 80 的请求都被转发到负载均衡器后面主机上的端口 8080。 所有对端口 443 的请求都转发到负载均衡器后面主机上的端口 8443。
当请求到达端口 http://address.com 时,它正在使用负载平衡器上的端口 80 和主机上的端口 8080,这里一切正常。
重定向现在应该指向 https://address.com:443, but instead points to https://address.com:8443,负载均衡器不理解,因此请求终止。
我也尝试将 https 连接器的 https 端口更改为 443(不知道端口信息的来源)但没有效果,仍然使用端口 8443。
有人知道我需要更改什么以允许 80 -> 8080 ==> 443 -> 8443 吗?
提前致谢
这里是 server.xml HTTP 连接器:
<Connector protocol="HTTP/1.1"
port="8080"
address="${jboss.bind.address}"
connectionTimeout="20000"
redirectPort="443"
compression="2048"
compressableMimeTypes="text/html,text/xml,text/plain,text/css,text/javascript"
URIEncoding="UTF-8"/>
此处对应的HTTPS连接器:
<Connector protocol="HTTP/1.1"
SSLEnabled="true"
port="8443"
address="${jboss.bind.address}"
compression="2048"
compressableMimeTypes="text/html,text/xml,text/plain,text/css,text/javascript"
scheme="https"
secure="true"
clientAuth="false"
sslProtocol = "TLS"
... keystore stuff ...
/>
以及来自 web.xml
的机密块<security-constraint>
<web-resource-collection>
<web-resource-name>Security Required</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
我通过谷歌搜索网络找到了解决方法(丢失了我在 :( )
上找到的实际页面在 server/default/conf/bindingservice.beans/META-INF/bindings-jboss-beans.xml 中是对重定向端口进行的 xsl 转换:
<xsl:when test="(name() = 'redirectPort')">
<xsl:attribute name="redirectPort">
<xsl:value-of select="$portHttps" />
</xsl:attribute>
</xsl:when>
将其注释掉(将其更改为):
<!--
<xsl:when test="(name() = 'redirectPort')">
<xsl:attribute name="redirectPort">
<xsl:value-of select="$portHttps" />
</xsl:attribute>
</xsl:when>
-->
现在重定向正确。