目标,使IIS具有类似与Nginx的功能,将指定域名的请求重定向到IIS内、IIS外、其他机器上的其他端口,并且实现https卸载功能
重点预告:
1.安装最新版urlrewrite(微软开发的)插件
2.安装最新版ARR插件(Application Request Routing)
3.添加重定向规则
4.流量:外网==>IIS==>指定网站==》UrlRewrite==》ARR==》你的目标程序的url
如果只转发到IIS内网站,则不需要ARR。如果要转发到其他程序或机器,则必须要ARR
如果不需要https卸载可以直接在全局配置规则。
====================正文分割线====================
1.材料
IIS(Windows专业版自带,如果是server版系统,需要通过功能管理器安装(无需下载))
urlrewrite插件,https://www.iis.net/downloads/microsoft/url-rewrite
ARR插件(Application Request Routing)https://www.iis.net/downloads/microsoft/application-request-routing。如果只转发到IIS内网站,则不需要ARR
上面两个插件均可以通过WebPlatformInstaller 搜索安装
2.安装插件
安装好以上两个插件,重启IIS管理器,然后点击当前主机,就会发现两个新增的图标了。如果没看到的话,重启IIS、重启
3.设置绑定
如果不需要https卸载(即外网https流量转发为http流量)可以跳过这步。
使用默认的Default Site或者新建一个网站。并设置绑定如下图
根据需求设置端口和ip。
其中主机名设置为*
为什么要设置为*呢,目标是将要所有流量接入该网站。然后通过ARR/Rewrite将指定的流量再转发出去。
如果你理解了这里的主机名的作用,那么也可以设置指定的一个或多个域名,例如 www.example.com。这样设置转发的时候不会影响其他网站,缺点(也是优点)是,只能接入设置了域名的流量。
注意:https需要先导入/创建一个自签名证书,并在添加https绑定的时候指定该证书。导入证书的图标在第一张图中(服务器证书/ServerCertificates)。
4.ARR设置(如果只转发到IIS内则不需要ARR)
5.添加转发规则。
这里要注意:
- 规则有两个地方,一个是IIS管理器中单击主机名,一个是单击网站。二者的范围不言自明,一个是全部流量转发,一个是只转发流入指定网站的流量。
- 要实现https卸载,则必须设置网站中的规则。
这里使用网站规则,因此需要先点击网站,然后双击打开UrlRwrite
添加一条空白规则
填上需要的内容
填好了,赶紧保存下。
6.测试
此时,启动网站,启动9000端口的程序。浏览器输入 https://a.example.com,如果在本地调试,需要在hosts中配置域名转向到本地才能测试哦。
如果使用自签名证书,可能会提示该网站不安全,因为证书的颁发人和目标人都是你自己,而不是第三方受信任的机构。可以把该证书下载下来,然后安装到 受信任的证书颁发机构中。再次打开即可
ARR中还有个功能比较有意思,叫反向代理抓发,可以实现对流入流量的抓包。
如果使用Fiddler来做反向代理监听上面的8889端口,可以参考http://docs.telerik.com/fiddler/configure-fiddler/tasks/usefiddlerasreverseproxy
也就是在 Fiddler Script中找到 OnBeforeRequest 这个函数,在函数中增加下面一句即可
if (oSession.host.toLowerCase() == "127.0.0.1:8889") oSession.host = "127.0.0.1:9000";//目标服务器监听在127.0.0.1:9000,此时可以在Fiddler中看到入站流量包的详细信息。