最近在做小程序的项目,微信要求所有数据请求通道都要走https或wss。而我们的项目建设如下:

    api基于C#的MVC webapi开发。

    websocket基于Nodejs的thinkjs框架开发。

  因此会导致一个要求,就是api暂时不支持.net core,因此只能部署在windows下,使用IIS作为web服务器。又因为IIS占用了80端口,因此没法用nginx作为反向代理。

  经过一番研究后发现,IIS8以上版本可以作为反向代理服务器。因此只要将IIS作为反向代理服务器,将SSL证书和域名绑定到IIS上,再通过IIS新增的URL重写模块将请求转向给内部的websocket服务就可以了。

具体操作如下:

  一、下载ARR

  下载地址:http://www.iis.net/downloads/microsoft/application-request-routing

  下载完后无脑点击运行,一直点下一步就可以了。

  二、启动Proxy

  

  三、新增反向代理服务器,设置方向代理URL重写规则

  在IIS中新增一个网站,然后点击URL重写模块。在右侧点击【添加规则】--【入站规则】 -- 【空白规则】

  

将URL的匹配模式设置成^(.*),再将重写URL设置成:http://localhost:8361/{R:1}

  举个例子:

    入站前:http:www.beta.com/?params=1

    重写后:http://localhost:8361/params=1

  这样通过这个规则,可以将URL从域名转换成内部的局域网URL

  

  

  

  四、设置websocket重写规则

  在步骤三中,可以通过反向代理服务器将外部访问的URL请求转成内部的URL请求。

  但是,别忘记我们这个是一个websocket专用的反向代理服务器。

  而websocket在请求的时候,不是http://开头,而是以ws://开头。因此我们要重新配置一下。

  在条件中加入以下配置:

  

  同时将重写URL改成:

  

  这么些是什么意味呢?

  就是说如果是http请求:

    入站前:https:www.beta.com/?params=1

    重写后:http://localhost:8361/params=1

  如果是ws请求:

    入站前:wss:www.beta.com/?params=1

    重写后:ws://localhost:8361/params=1

  这样既能应对http请求的URL转换,又能应对websocket的URL转换。

  心细的朋友可能是注意到,为什么要将https转成http,将wss转成ws。

  这就回到问题的原点,因为小程序的请求规则里要求,所有数据请求通道都要走https或wss。所谓外部过来的请求必然要带https或wss。但是内部处理的时候又不需要带SSL认证,因此需要将头里面的s给去掉。

  

  五、绑定SSL证书和域名

  此时,我们只要将SSL证书和域名绑定到代理服务器上就行了。具体就不多说了。

  只是有一点要特别注意一下,因为IIS只支持一个SSL,多个网站绑定不同的SSL证书时会导致443端口冲突。因此在绑定https的时候,一定要记得勾选。

最新文章

  1. JAVASCRIPT 中 FOR (VAR I IN DATA) 循环数组项
  2. SQL 使用 AND 与 OR
  3. android 学习运用海马模拟器教程与android环境的搭建
  4. Windows 8 电话激活密钥。(更新至 2013-07-21)
  5. codeforces 390E Inna and Large Sweet Matrix
  6. day 05
  7. Optaplanner规划引擎的工作原理及简单示例(1)
  8. 二叉搜索树的第K大节点
  9. 开启Tomcat的manager页面访问
  10. GitHub & OAuth 2.0 & JWT
  11. 关于VC工程编译不过去这件事
  12. [jQ]jQuery显式操作Checkbox,并用数组存储关联值的方案
  13. 【bzoj3238】 Ahoi2013—差异
  14. Nmap介绍
  15. Hello Vizhub
  16. Javascript中的名词
  17. Python学习-赋值、浅copy和深copy
  18. SQL语句详细汇总[转]
  19. IDC机房与阿里云vpc网络建立高速通道
  20. C++ 关于运算符重载

热门文章

  1. Ticwatch2_3G版省电优化
  2. JDK TOMCAT MYSQL 配置
  3. 使用BeautifulSoup
  4. xml转换为json格式时,如何将指定节点转换成数组 Json.NET
  5. TensorFlow windows 安装(base anaconda)
  6. Spring项目使用Junit4测试配置
  7. com.fasterxml.jackson工具类
  8. spring boot集成FastDFS
  9. 浅入深出Vue:工具准备之WebStorm安装配置
  10. CentOS下TensorFlow安装命令