使用IIS做HTTP和WebSocket服务的反向代理

反向代理对于服务器来说是非常实用的功能,可以将毫不相关的网站部署到同一个域名下,对于使用docker的人来说可以免去大量配置上的麻烦。它还能将HTTP流量转换成HTTPS,多个服务只需要一个证书就能解决。

对于nginxApache,网上已经有大量教程,不管是什么样的服务都能找到相应的配置。然而由于使用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},问题迎刃而解。

文章目录
|