Перенаправить http запросы на https в wildfly 10

Это моя standalone-full.xml конфигурация с настроенным ssl
сфера безопасности.

      <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}"/>

Как перенаправить на https:/localhost:8443/myApp, когда пользователь нажимает http://localhost:8080/myApp

2 ответа

Решение

Правило перезаписи можно использовать для перенаправления пользователей. В подсистеме undertow (standalone.xml или domain.xml) вам нужно будет создать новый фильтр перезаписи, а затем включить фильтр в новом fitler-ref:

Создайте новый фильтр перезаписи в разделе фильтров. В приведенном ниже примере пользователи будут перенаправлены на 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)"/>

Вот шаги CLI JBoss для тех же самых изменений конфигурации выше:

/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)")

Начиная с WildFly 15: консоль администратора -> Интернет -> фильтры -> добавить правило перезаписи https://%v%U

Затем добавьте его к каждому желаемому хосту с условием equals(%p,80),

Не нужно создавать правила для каждого хоста.

https://javagc.leponceau.org/2019/02/configuring-wildfly-to-redirect-https.html

Я старался

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

Как вы можете видеть без %U

Он перенаправляет весь HTTP-трафик на HTTPS

Другие вопросы по тегам