在Wildfly 10中将HTTP请求重定向到HTTPS

9
这是我配置了SSL的standalone-full.xml文件。
安全域。
      <security-realm name="SslRealm">
            <server-identities>
            <ssl>
            <keystore path="D:\ncm.keystore" alias="ncm" keystore-password="*****" />
            </ssl>
            </server-identities>
        </security-realm>

子系统

 <server name="default-server">
            <http-listener name="default" socket-binding="http" redirect-socket="https"/>
            <https-listener name="default-ssl" socket-binding="https" security-realm="SslRealm"/>
            <host name="default-host" alias="localhost">
                <location name="/" handler="welcome-content"/>
                <filter-ref name="server-header"/>
                <filter-ref name="x-powered-by-header"/>
            </host>
        </server>

套接字绑定

   <socket-binding name="http" port="${jboss.http.port:8080}"/>
    <socket-binding name="https" port="${jboss.https.port:8443}"/>

当用户访问 http://localhost:8080/myApp 时,如何重定向到 https:///localhost:8443/myApp ?

3个回答

29

重写规则可以用于重定向用户。在undertow子系统(standalone.xml或domain.xml)中,您需要创建一个新的重写过滤器,然后在新的filter-ref中启用该过滤器:

在filters部分中创建新的重写过滤器。在下面的例子中,用户将被重定向到https://myhostname:443/my-app。%U是原始请求URL路径的占位符;您希望使用%U使重定向友好并保持用户的原始请求URL路径。

<filters>
<rewrite name="http-to-https" redirect="true" target="https://myhostname:8443%U"/>
</filters>

然后,启用过滤器并在主机部分配置谓词。 谓词是您配置重写过滤器应用于何处的位置。 在下面的示例中,我们的重写过滤器仅适用于发送到端口8080的请求。

    <server name="default-server">
        <host name="default-host" alias="localhost">
            ...
            <filter-ref name="http-to-https" predicate="equals(%p,8080)"/>

以下是用JBoss CLI执行上述配置更改的步骤:

/subsystem=undertow/configuration=filter/rewrite=http-to-https:add(redirect="true",target="https://myhostname:8443%U")
/subsystem=undertow/server=default-server/host=default-host/filter-ref=http-to-https:add(predicate="equals(%p,8080)")

谢谢!它确实起作用了。有关此内容的任何参考/文档/来源吗? - Faiyaz Md Abdul
我也无法在默认的443端口上运行。 - Faiyaz Md Abdul
2
没有公共文档。关于端口,您需要检查Windows上的443端口是否可访问。在Linux中,您必须成为root(具有超级用户特权)才能侦听1024以下的TCP或UDP端口。不确定Windows的情况。 - Varsha
2
原始文档可以在Undertow项目下找到。 Undertow是在wildfly 10引擎下运行的Web服务器。 - Petr Hunka
这在wildfly-8.1中也支持吗?我正在尝试,但它在那里无法工作。 - sumit
1
改进:将“%q”添加到目标值中更好,因为它可以添加重定向参数,例如:target="https://%v:8458%U%q"。 - Edison Agurto

2

0

我尝试过

<rewrite name="http-to-https" redirect="true" target="https://my.website.com:443/Web/"/>

正如您所见,没有 %U

它会将所有 HTTP 流量重定向到 HTTPS。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接