IIS反向代理后面的密钥斗篷

问题描述

我只是无法让我的反向代理正常工作,希望有人可以帮助我。

一些信息:

添加了1个VM Windows Server 2019,IIS 10(带有ARR和URL重写模块),“认网站”下的“ keycloak”应用程序, proxy-address-forwarding =“ true” standalone.xml

keycloak在本地可通过“ localhost:8080”获得。可以从内部网络访问认网站(端口80已打开,8080已关闭)。我想使用IIS作为keycloak的反向代理。它应该类似于以下URL。

请求:“ http:// server_fqdn / keycloak”-> IIS反向代理->本地主机:8080

起初,我尝试了不带“ / keycloak”的程序,并且效果很好。添加“ / keycloak”后,它仅显示404错误。我看到它尝试打开“ http:// server_fqdn / auth”而不是“ http:// server_fqdn / keycloak / auth”。如果我手动输入“ / keycloak / auth”,它将起作用。我的第一个念头是编写另一个空白入站规则,该规则将“ http:// server_fqdn / auth”重定向到“ http:// server_fqdn / keycloak / auth”。它可以工作,但是现在还有另一个问题。如果我想进入管理控制台,则会收到一条错误消息,提示“无效参数:redirect_uri”。

它停在以下URL(不完整,但必要的部分在那里)

http:// server_fqdn / keycloak / auth / realms / master / protocol / openid-connect / auth?client_id = security-admin-console&redirect_uri = http%3A%2F%2Fserver_fqdn%2Fkeycloak%2Fauth%2Fadmin%2Fmaster%2Fconsole %2F&state = .....

如果我在“ redirect_uri”之后删除 %2Fkeycloak ,它会起作用,并且我会显示密钥斗篷登录屏幕。也许有人可以在这里帮助我。

入站反向代理规则:

<rule name="ReverseProxyInboundRule1" enabled="true" stopProcessing="true">
    <match url="^keycloak/(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Rewrite" url="http://localhost:8080/{R:1}" />
    <serverVariables>
    </serverVariables>
</rule>

出站反向代理规则:

<outboundRules>
    <clear />
    <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" enabled="true">
        <match filterByTags="A,Area,Base,Form,Head,IFrame,Img,Input,Link,Script" pattern="^http://localhost:8080/(.*)" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="true">
        </conditions>
        <action type="Rewrite" value="http://server_fqdn/keycloak/{R:1}" />
    </rule>
    <preConditions>
        <preCondition name="ResponseIsHtml1">
            <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
        </preCondition>
    </preConditions>
</outboundRules>

入站反向代理规则:

<rule name="keycloak" enabled="true" stopProcessing="true">
    <match url="^auth/(.*)" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="Redirect" url="http://server_fqdn/keycloak/{R:0}" redirectType="Permanent" />
</rule>

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)