我只是无法让我的反向代理正常工作,希望有人可以帮助我。
一些信息:
添加了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>