【问题标题】:IIS URL Rewrite rule to forward to apiIIS URL 重写规则转发到 api
【发布时间】:2021-08-04 18:24:51
【问题描述】:

我在同一台服务器上托管 vue.js 和 asp.net 核心。 我的管理员只允许通过端口 443/https 获取流量。 因此,我试图让 ReverseProxy(?) 运行。

https://pim.test.de 的所有流量都应该转到此 web.config 的站点。但是访问包含/api/ 的链接的流量,例如https://pim.test.de/api/service/getinfoall 应该转发到端口 44310 上的站点,在那里可以访问 ASP.net 核心应用程序。所以在内部它应该将请求重新路由到https://pim.test.de:44310/api/service/getinfoall

我做错了什么?

  <system.webServer>
    <rewrite>
      <rules>

        <rule name="redirecting to port 44310">
          <match url="/api/(.*)" />
          <action type="Rewrite" url="https://pim.test.de:44310/api/{R:1}" logRewrittenUrl="true" />
        </rule>
      </rules>
    </rewrite>

【问题讨论】:

  • 您可以将两者放在一个项目中并进行部署。先试用模板medium.com/@alexandre.malavasi/…,然后复制/粘贴您的代码。
  • @LexLi 感谢您的回复,但在这种情况下,这不是一个选项。主要原因之一是我们将庞大的后端拆分为多个使用网关的微服务,以减少停机时间、更好的独立开发、更小的可组织代码库等。对于前端,我们使用来自 quasar.dev 框架的特殊 CLI,它也与 asp.net 项目不兼容。
  • 那么请使用FRT来了解你的规则有什么问题,docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/… 一眼看去,你在match标签中设置了错误的值,因为请求URL不是以/开头的。
  • 谢谢你,这实际上有助于让它工作:)
  • 如果你已经得到它的工作,然后发布你自己的答案并接受它。

标签: asp.net asp.net-core web iis


【解决方案1】:

@Lex Li 有正确的解决方案。我只需要在match 标签中删除api 之前的\

 <system.webServer>
    <rewrite>
      <rules>
        <rule name="redirecting to port 44310">
          <match url="api/(.*)" />
          <action type="Rewrite" url="https://pim.test.de:44310/api/{R:1}" logRewrittenUrl="true" />
        </rule>
      </rules>
    </rewrite>

【讨论】:

    猜你喜欢
    • 2014-10-27
    • 2014-05-01
    • 1970-01-01
    • 2011-04-21
    • 2014-07-03
    • 2014-01-05
    • 1970-01-01
    相关资源
    最近更新 更多