摘要

本文介绍 IIS10 通过安装 ARR 3.0(Application Request Routing),配置 Application Request Routing Cache 开启代理,配置 URL Rewrite 创建匹配规则,实现前端跨域请求 API 功能。即访问 http://localhost:8001/api/list,实际会被代理到 http://localhost:8002/api/list 。

## 原请求
http://localhost:8001/api/list   

## 实际代理到后端服务
http://localhost:8002/api/list

服务器环境

IIS 前端服务器

IIS 服务器创建一个端口为 8001 的网站,目录下有一个 test.html,请求接口地址为 “/api/get.json” 。访问地址为:http://localhost:8001/test.html 。

Node.js 后端服务器

使用 http-server 开启一个端口为 8002 的服务器,”api“目录下一个 JSON 文件 get.json ,访问地址为:http://localhost:8002/api/get.json 。

一. 安装 ARR 3.0(Application Request Routing)

访问 IIS 官方网站:https://www.iis.net/downloads/microsoft/application-request-routing ,有两种安装方式。

  • 通过 Web 平台安装程序(Web Platform Installer):直接点击 “Install this extension” 按钮即可。
  • 下载包安装:x86 installer / x64 installer
# 重启 IIS
iisreset

二. 配置 Application Request Routing Cache

1、安装成功后,IIS 管理里会看到多出一个图标 “Application Request Routing Cache“,点击进去进行配置。

2、进去后,点击 Server Proxy Settings

3、在设置页面,勾选 Enable proxy, 。

4、应用保存刚才设置。

三. 配置 URL 重写(URL Rewrite)

1、进入 IIS 网站管理,可以看到多出一个 URL 重写(URL Rewrite) 的图标。

2、进入 URL 重写(URL Rewrite),点击“添加规则”。

3、进入添加规则弹窗,点击“空白规则”。

4、配置规则:

# 模式(T)
^(.*?)/?api/(.*)$

# 重写 URL(L)
http://localhost:8002/{R:0}  

即 8001 端口的前端服务器,访问路径中包括 /api/ 的请求,会被代理到 8002 端口的后端服务器。

5、应用保存配置。

测试

访问前端服务器:http://localhost:8001/test.html ,可以看到接口访问地址(http://localhost:8001/api/get.json) 状态码是 502

这是因为还没开启后端服务器,让我们开启再试一下。

现在刷新前端页面(http://localhost:8001/test.html),可以看到接口请求已经成功。

再回到后端服务器,查看日志,可以看到刚才有一条 GET 请求记录,证明刚才 8001 端口服务器的请求,已经成功代理到 8002 端口服务器的了。

结语

IIS 配置偏图形化,按理讲应该更友好一些,但事实是增添了很多操作步骤,比起Nginx 的几行配置文件,实际体验反而复杂许多。

参考资料


【无稽山】原创作品(公众号:无稽山)

转载请注明出处: https://blog.givebest.cn/other/2019/06/07/iis10-proxy-cross-domain.html