最近在做小程序的项目,微信要求所有数据请求通道都要走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的时候,一定要记得勾选。

【运维】在Windows上使用IIS方向代理配置Websocket的更多相关文章

  1. 开发便于运维的Windows服务

    过去几个月,DevOps on Windows网站推出了一系列文章,详细讲解了开发者应怎样创建便于运维的Windows服务.这一系列文章详细分析了如何克服在运维部门看来最困难的部分:Windows服务 ...

  2. windows上redis的安装和配置

    windows上redis的安装和配置 进入到Redis的根目录D:\Programming\Redis\Redis6379\Redis-x64-3.2.100底下操作: 配置文件启动 redis-s ...

  3. Windows上Ruby开发环境的配置

    最近公司项目上有需要,需要开发一个puppet的自动化工具,这个工具需要操作存储设备上的各种资源,而鉴于puppet不是善于完成这个任务的首选语言,于是我们选择了puppet的“爹”,Ruby. 熟悉 ...

  4. Nginx在windows上安装 及 Nginx的配置及优化

    https://www.cnblogs.com/Chiler/p/8027167.html http://www.runoob.com/linux/nginx-install-setup.html 前 ...

  5. IIS反向代理配置教程(最终完整版本)

    IIS代理配置教程 插件下载:https://download.csdn.net/download/song_yan_/11996489 一.安装反向代理插件 1.rewrite插件安装 (1) 双击 ...

  6. 【服务器运维】Windows Server 2008 R2 下配置证书服务器和HTTPS

    前言 2017年1月1日起App Store上的所有App应用将强制开启ATS功能. 苹果的ATS(App Transport Security)对服务器硬性3点要求: ① ATS要求TLS1.2或者 ...

  7. 桌面运维之Windows快捷键,每一个工程师都是“快捷键”的工程师!

    1.win快捷键 首先教大家win7新增的3D效果: Win + Tab 快速切换已打开的程序(和Alt+tab一样的效果) Win + Home 将所有使用中窗口以外的窗口最小化 Win + Spa ...

  8. 【Linux运维】Centos7上借助ansible搭建LVS+Keepalived

    安装ansible 安装ansible: [root@localhost ~]# /etc/hosts 192.168.19.129 web129.yanglt.com web129 192.168. ...

  9. 运维笔记--线上服务器git环境配置

    场景描述: 我们采用git去管理代码分支,本地开发环境,线上服务器多数情况下也会使用git去管理程序代码,那么新的一台服务器,如果指定了目标路径作为代码存放路径,该如何配置git环境, 以达到跟远程服 ...

随机推荐

  1. 江西财经大学第二届程序设计竞赛同步赛 H大时钟 (扩展欧几里得)

    链接:https://ac.nowcoder.com/acm/contest/635/H来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  2. macos + vs code + grep 进行多文件搜索

    macos下,打开vs code后,选择view菜单,点击terminal, 在vs code中打开控制台.执行以下grep命令: grep -w "p" -n -r  /User ...

  3. 我的第一个微信小程序

    今年国庆假期的时候,在家里带宝宝.想下载一个哄宝宝玩的游戏,从 App Store上搜索了一圈,发现评分高的基本上都是收费的.因为App Store上有限免机制,所以就萌发了做一款关注限免应用的小程序 ...

  4. 输入法无法切换 win10

    https://jingyan.baidu.com/article/e2284b2b6ea3f8e2e6118d38.html https://jingyan.baidu.com/article/ce ...

  5. Django 中使用ImgFiled 和FileFiled

    1.使用ImgFiled class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, * ...

  6. Lloyd’s 算法 和 K-Means算法

    在讲Lloyd’s 算法之前先介绍Voronoi图 在数学中,Voronoi图是基于到平面的特定子集中的点的距离将平面划分成区域.预先指定一组点(称为种子,站点或生成器),并且对于每个种子,存在相应的 ...

  7. 四、Tensorflow的分布式训练

    TensorFlow中的集群(cluster)指的是一系列能够针对图(Graph)进行分布式计算任务(task).每个任务是同服务(server)相关联的.TensorFlow中的服务会包含一个用于创 ...

  8. [源码分析]AbstractStringBuilder

    [源码分析]AbstractStringBuilder Java中, AbstractStringBuilder是 StringBuilder 和 StringBuffer 的父类. 所以了解Stri ...

  9. Visual Studio 使用 Web Deploy 发布远程站点

    Ø  简介 本文介绍 Visual Studio 如何使用 Web Deploy发布远程站点,有时候我们开发完某个功能时,需要快速将更改发布至服务器.通常 Visual Studio 可以采用两种方式 ...

  10. [Reinforcement Learning] Model-Free Control

    上篇总结了 Model-Free Predict 问题及方法,本文内容介绍 Model-Free Control 方法,即 "Optimise the value function of a ...