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

时间:2020-09-14 10:03:21

标签: iis url-rewriting reverse-proxy keycloak arr

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

一些信息:

添加了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>

0 个答案:

没有答案