You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wildfly HTTP重定向配置:实现HTTP全请求重定向及目录访问限制

最简单实现Wildfly HTTP重定向与目录访问控制的方案

嘿,针对你这个Wildfly环境下的需求,最简单的实现方式就是利用Wildfly自带的Undertow服务器配置,不用额外部署任何web应用,改改配置文件就能搞定。我给你分两种场景说,看哪种更贴合你的需求:

场景1:所有HTTP请求直接重定向到HTTPS的ourserver.net(最简化)

如果你的核心目标就是让所有访问http://ourserver.com的用户都被重定向到https://ourserver.net,同时自然禁止HTTP访问webservice(因为都被转走了),那这个方案最省事:

  1. 先确认HTTP监听端口已开启
    打开Wildfly安装目录下的standalone/configuration/standalone.xml(集群模式就找domain下的对应配置),找到<socket-binding-group>节点,确保有HTTP的绑定(没有就加上):

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

    别忘了开放防火墙对应的端口(比如8080,要是想用80端口的话注意系统权限)。

  2. 添加全局重定向的Rewrite规则
    找到<subsystem xmlns="urn:jboss:domain:undertow:XX.X">(XX.X是你Wildfly版本对应的Undertow版本),先在<filters>节点里加一个重定向过滤器:

    <filters>
        <!-- 保留原来的其他过滤器,添加下面这行 -->
        <rewrite name="http-to-ourserver-https" pattern="^/(.*)$" substitution="https://ourserver.net/$1" flags="R=301,L"/>
    </filters>
    

    然后在<host name="default-host" alias="localhost">节点末尾加上这个过滤器的引用,只对非HTTPS请求生效:

    <host name="default-host" alias="localhost">
        <!-- 保留原来的内容,添加下面这行 -->
        <filter-ref name="http-to-ourserver-https" predicate="not equals(%{HTTPS}, 'on')"/>
    </host>
    
    • R=301是永久重定向,适合域名调整的场景,浏览器会缓存规则;临时调整可以换成R=302
    • predicate用来判断是不是HTTP请求,确保HTTPS请求不受影响
  3. 重启Wildfly生效
    改完配置重启服务器,现在所有HTTP请求都会被自动重定向到https://ourserver.net的对应路径,webservice自然没法通过HTTP访问,完全满足你的需求。

场景2:需单独控制webservice的HTTP访问

如果你确实需要临时拦截HTTP访问webservice,再把其他请求重定向,那可以加更细的规则:

在<filters>里多加一个拦截webservice的过滤器:

<filters>
    <rewrite name="http-to-ourserver-https" pattern="^/(.*)$" substitution="https://ourserver.net/$1" flags="R=301,L"/>
    <rewrite name="block-webservice-http" pattern="^/webservice/(.*)$" substitution="" flags="F"/> <!-- 返回403禁止访问 -->
</filters>

然后在<host>节点里先配置webservice的拦截规则,再加全局重定向:

<host name="default-host" alias="localhost">
    <!-- 先拦截HTTP访问webservice -->
    <location name="/webservice" handler="welcome-content">
        <filter-ref name="block-webservice-http" predicate="not equals(%{HTTPS}, 'on')"/>
    </location>
    <!-- 其他HTTP请求重定向 -->
    <filter-ref name="http-to-ourserver-https" predicate="not equals(%{HTTPS}, 'on')"/>
</host>

这样HTTP访问webservice会直接返回403,其他HTTP请求还是重定向到ourserver.net。不过说实话,这种场景不如直接全局重定向简洁,毕竟你的核心需求还是“确保所有HTTP访问均被重定向”,场景1应该更贴合。

注意点

  • 配置里的alias可以加上你的域名ourserver.com,比如<host name="default-host" alias="localhost, ourserver.com">,确保规则对域名生效
  • 如果Wildfly版本较旧,Undertow的rewrite语法可能稍有不同,比如有些版本用<rewrite-rule>代替<rewrite>,可以参考对应版本的官方文档调整

内容的提问来源于stack exchange,提问作者user1371844

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:10:33