赞
踩
目前仅有一台域名备案并开通80端口的服务器,而有多个部署在此服务器的.NetCore程序需要与微信进行独立的集成(同一个认证微信服务号),因此需要实现非80端口反向代理外网80端口,例如通过a.test.com和b.test.com即可访问当前服务器的8028和8029端口上部署的程序。
由于程序是部署在Windows服务器的IIs8.5版本,开发环境为.NetCore2.1,因此考虑使用IIS进行反向代理,步骤如下:
ARR:https://www.iis.net/downloads/microsoft/application-request-routing?k26099222 ,用于反向代理
URL-ReWriter:https://www.iis.net/downloads/microsoft/url-rewrite ,用于重写Url,实现二级域名反向代理
如果安装后找不到application request routing,可按下列步骤重新安装
IIS8.5安装ARR
1. 关闭相关服务
net stop was /y
net stop wmsvc /y (可能没有)
2. 手动安装ARR的依赖项
a) Web Farm Framework module version 1.1
b) External cache module version 1.0
c) URL Rewrite module version 2.0
3. 安装ARR.version 3.0
4.启动之前关闭的服务
net start was
net start wmsvc
5.安装成功
相关依赖下载链接:
ARR3.0下载 IIS7 ARR(Application Request Router)反向代理路由 3.0 安装包(附教程) 64位 下载-脚本之家 (jb51.net)
安装后可在IIS中看到:
如HTTP_ACCEPT_ENCODING就是解决重写Url后转发时Gzip压缩带来的问题。
- <rewrite>
- <outboundRules>
- <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" stopProcessing="false">
- <match filterByTags="A, Form, Img" pattern="^http(s)?://weixin.XXX:8028/(.*)" />
- <action type="Rewrite" value="http{R:1}://weixin.XXX.cn/{R:2}" />
- </rule>
- <preConditions>
- <preCondition name="ResponseIsHtml1">
- <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
- </preCondition>
- </preConditions>
- </outboundRules>
- <rules>
- <rule name="ReverseProxyInboundRule1" stopProcessing="true">
- <serverVariables>
- <set name="HTTP_ACCEPT_ENCODING" value="" />
- </serverVariables>
- <match url="(.*)" />
- <action type="Rewrite" url="http://weixin.XXX.cn:8028/{R:1}" />
- </rule>
- </rules>
- </rewrite>
- <urlCompression dynamicCompressionBeforeCache="false" />
其中rewrite、rules等规则是在完成IIS配置后自动增加的,serverVariables、urlCompression节需要我们手工在web.config中增加进去,注意位置。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。