反向代理对于服务器来说是非常实用的功能,可以将毫不相关的网站部署到同一个域名下,对于使用docker的人来说可以免去大量配置上的麻烦。它还能将HTTP流量转换成HTTPS,多个服务只需要一个证书就能解决。
对于nginx和Apache,网上已经有大量教程,不管是什么样的服务都能找到相应的配置。然而由于使用IIS的人数相对较少,对于IIS的反向代理几乎没有什么人去研究。连进行URL重写的AAR模块也没什么相关资料。
如果服务只需要用HTTP,配置相对简单。首先添加入站规则,匹配模式
设为xxx/(.*)
,重写URL
设为http://ip.address.or.domain/{R:1}
,同时勾选附加查询字符串
和停止处理后续规则
就搞定了。
然而,很多时候光转发HTTP是完全不够的。许多服务在使用HTTP的同时还会打开WebSocket连接,URL为ws://
或者wss://
开头。这种情况下如果只转发HTTP,服务就无法正常使用,比如jupyter就无法启动内核。所以,一般来说最好能同时转发HTTP和WebSocket流量。
使用IIS实现起来并不复杂,然而由于资料较少,我没少走弯路。除了之前转发HTTP的配置外,在条件
下添加一项,条件输入
为{CACHE_URL}
,模式为(.+)://
,然后重写URL
改为{C:1}://ip.address.or.domain/{R:1}
,问题迎刃而解。
本文标题:使用IIS做HTTP和WebSocket服务的反向代理
文章作者:xieyi
发布时间:2017-11-17, 18:07:17
最后更新:2017-11-17, 11:54:44
原始链接:http://imxieyi.com/2017/11/17/使用iis做http和websocket服务的反向代理/
许可协议: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。