在IIS中是否能实现这样的功能呢?如果是之前,可能需要借助第三方的扩展组件才能实现。
现在微软也自己提供了官方的扩展插件了。
首先我们需要安装ARR(应用请求路由组件)和iis urlrewrite(url重写组件)。
url重写组件(支持 IIS 7, IIS 7.5, IIS 8, IIS 8.5, IIS 10):
https://www.iis.net/downloads/microsoft/url-rewrite
应用请求路由组件:Application Request Routing
https://www.iis.net/downloads/microsoft/application-request-routing
从微软官方下载安装即可。
再然后是规则配置了。
首先我们配置 url重写,和nginx的步骤差不多,直接将匹配的url重写为新的(含 完整域名的)目标url即可。
ARR在这里提供的功能类似于nginx中的 upstream。
只需要在IIS配置管理器中找到ARR组件,并打开设置开启反向代理功能即可。
url重写后的目标uri资源会被自动读取并返回给客户端。
规则例子:
<rewrite>
<rules>
<rule name="Reverse Proxy to webmail" stopProcessing="true">
<match url="^webmail/(.*)" />
<action type="Rewrite" url="http://localhost:8081/{R:1}" />
</rule>
<rule name="Reverse Proxy to payroll" stopProcessing="true">
<match url="^payroll/(.*)" />
<action type="Rewrite" url="http://localhost:8082/{R:1}" />
</rule>
</rules>
</rewrite>
<rules>
<rule name="Reverse Proxy to webmail" stopProcessing="true">
<match url="^webmail/(.*)" />
<action type="Rewrite" url="http://localhost:8081/{R:1}" />
</rule>
<rule name="Reverse Proxy to payroll" stopProcessing="true">
<match url="^payroll/(.*)" />
<action type="Rewrite" url="http://localhost:8082/{R:1}" />
</rule>
</rules>
</rewrite>