如何为Undertow / JBoss 7.2 EAP重写重写阀?

6xfqseft  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(189)

我正在从JBoss 6.4.3迁移到JBoss 7.2,在部署过程中看到了Valves are no longer supported警告。

<valve>
    <class-name>org.jboss.web.rewrite.RewriteValve</class-name>
</valve>

...和相应的rewrite.properties文件:

RewriteCond %{HTTP:X-Forwarded-Proto} http
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

有没有人能建议如何改写这(没有双关语)的暗流?

oogrdqng

oogrdqng1#

您可以在Undertow子系统中创建一个rewrite过滤器,然后在服务器主机的配置文件(standalone.xmldomain.xml -具体取决于启动应用服务器的模式)中引用它。
我能想到两个可能对你有帮助的选择:

  • 使用JBoss Application Server Client(应放置在path/to/jboss-7.2/bin/
  • 使用自定义名称redirect-http-to-https创建重写筛选器:
./jboss-cli.sh --connect --command="/subsystem=undertow/configuration=filter/rewrite=redirect-http-to-https:add(redirect=\"true\",target=\"https://%{LOCAL_SERVER_NAME}%{REQUEST_URL}\")"
  • 使用/引用过滤器redirect-http-to-https
./jboss-cli.sh --connect --command="/subsystem=undertow/server=default-server/host=default-host/filter-ref=redirect-http-to-https:add(predicate=\"equals(%p,80)\")"
  • 手动编辑相应的配置文件(例如standalone.xml
<subsystem xmlns="urn:jboss:domain:undertow:11.0" default-server="default-server" [...]>
            <buffer-cache name="default"/>
    <server name="default-server">
        [...]
        <host name="default-host" alias="localhost">
            <filter-ref name="redirect-http-to-https" predicate="equals(%p,80)"/>
        </host>
    </server>
    [...]
    <filters>
        <rewrite name="redirect-http-to-https" target="https://%{LOCAL_SERVER_NAME}%{REQUEST_URL}" redirect="true"/>
    </filters>
</subsystem>

注意事项:对于逆流交换属性(例如LOCAL_SERVER_NAME)引用Undertow documentation。此外,filter-ref中的predicate=\"equals(%p,80)\"部分检查所请求的端口(%p-〉仅仅是另一个逆流交换属性)并且如果它等于80,然后它触发我们的重定向过滤器redirect-http-to-https-您可以根据需要更改端口80

相关问题