前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iis配置路由遇到的坑小记

iis配置路由遇到的坑小记

作者头像
山行AI
发布2019-12-09 12:30:03
2K0
发布2019-12-09 12:30:03
举报
文章被收录于专栏:山行AI山行AI

公司旁边项目组是用.net 和 F#开发的,他们最近要把基于 nginx 的负载切换到 iis 上面去,但是一直有很多接口不通。由于涉及到我提供的服务,所以不得不参 与到问题的解决中来。

安装准备

不能免俗的是下载安装 ARR(Application Request Routing),下载地址为: http://www.iis.net/downloads/microsoft/application-request-routing。

安装完成后,在 iis 面板中会多出两个图标,分别是 Application Request Routing 和 URL 重写。

这两个图标就是代理的核心。

设置

Application Request Routing

设置在右侧 Server Proxy Settings 里,将代理功能开启,如下图:

设置 URL 重写

在设置 URL 重写之前需要先创建站点如下:

物理路径中是静态文件的地址,前后端分离的项目中这里是前端页面的地址。绑定和主机名中填写好监听的端口和网站地址。

点击确定后,在左侧会多出一个网站:

下面就可以开始配置端口路由了,也就是 URL 重写。

点击 URL 重写图标,新建空白规则,进行设置如下:

这里需要注意的有以下两点:

  • 这里的匹配 URL 中的内容时,匹配的是 host 和端口之后不以/开头的部分,比如请求是http://abc.com/third/calendar,那么这里匹配的是third/calendar部分
  • 正则表达式和通配符的匹配效果是不一样的,可以自己尝试。另外可以通过测试来确定下面的重写中是用 R:0 还是 R:1...

重写配置:

这里的 R:0 与 R:1,R:N 都是根据上面的测试结果来的。

条件的配置:

  • 一般情况有上面的配置就能满足需求了,但是如果需要加一些特别的配置,可以在这里添加,这里需要注意的一点是在配置{URL}的匹配时,这里的 URL 是以/开头的,这点和上面的 URL 匹配是不同的,也就是请求是http://abc.com/third/calendar,那么这里匹配的是/third/calendar部分
  • {HTTP_HOST}意思是请求的主机名,模式格式为:“^绑定的域名\$”
  • 这里校验规则时也有一个测试的部分,测试的结果是 C:N,建议还是在使用之前用路径来匹配测试一下。

这里需要注意的是如果配置的有多条规则,重写部分的停止继续往下匹配的那一项要选中,这样它匹配到前面的之后就不会继续往下匹配了,否则还会往下穿透。

问题与解决

现在准备工作都做好了,可以来聊一聊问题了。问题是在前端访问时,在有些页面内的访问时通的,在有些页面一直是不通的,于是开始了漫长的寻找问题之旅,因为之前使用的是 nginx,而大家也都没有使用 iis 的经验。直到最后,使用 www.abc.com/third/xxx/xxx 来访问时是可以通的,但是使用 abc.com/third/xxx/xxx 来访问时是 404。一个同事查了半天总以为是 iis 配置的问题,最后也未能解决。因为涉及到我这边的服务,所以临时来协助下。

一开始怀疑是 hosts 的配置问题,但转念一想,iis 是代理,加了代理之后应该是优先于 hosts 的。实际上改了 hosts 也未能解决问题。

后来想到了建站时的绑定设置,iis 应该是无法识别 www.abc.com 与 abc.com 其实是相同的,绑定如下:

发现是可以添加多个的,于是添加一个 abc.com 如下:

重启生效后,问题解决。

总结

可能是对 iis 不是很熟悉,但是实际的解决问题的思路是一样的。两种路径请求的结果不一样时,应该多做比较,多联想。也算是着实被 iis 坑了一把,但解决问题的过程中也学会了挺多东西。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-12-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 开发架构二三事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装准备
  • 设置
    • Application Request Routing
      • 设置 URL 重写
      • 问题与解决
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档