IIS8反向代理实现80端口访问多个.NetCore程序

2021-01-23 15:14

阅读:491

标签:ica   增加   mic   xxx   load   需要   iter   api   sof   

背景:

      目前公司仅有一台域名备案并开通80端口的服务器,而有多个部署在此服务器的.NetCore程序需要与微信进行独立的集成(同一个认证微信服务号),因此需要实现非80端口反向代理外网80端口,例如通过a.jiasheyuming.com和b.jiaasheyuming.com即可访问当前服务器的8028和8029端口上部署的程序。

 

解决方案:

      由于程序是部署在Windows服务器的IIs8.5版本,开发环境为.NetCore2.1,因此考虑使用IIS进行反向代理,步骤如下:

(1)在服务器IIS网站中新建一个站点,端口设置为80,系统会自动在站点目录下生成web.config文件

(2)安装IIS插件两款:

ARR:https://www.iis.net/downloads/microsoft/application-request-routing?k26099222  ,用于反向代理
URL-ReWriter:https://www.iis.net/downloads/microsoft/url-rewrite  ,用于重写Url,实现二级域名反向代理

安装后可在IIS中看到:

技术图片

 

技术图片

(3)对ARR进行设置,启用反向代理:

技术图片

技术图片

 

 

(4)选中80站点,进入Url Rewrite配置,在右侧点击“添加规则”

技术图片

 

 技术图片

 

 (5)确定后,可以看到新增了入站规则和出站规则:

技术图片

 

(6)如上图箭头所示,还需增加服务器变量,以处理Url重写带来的一些请求头问题:

技术图片

 

 如HTTP_ACCEPT_ENCODING就是解决重写Url后转发时Gzip压缩带来的问题。

 (6)注意,反向代理涉及到较多HTTP协议规则,有时会由于目标站点的设置导致500失败,往往是需要通过增加专门的规则来解决,例如增加特殊的Http头或设置,具体要看发生的错误。开启IIS完整错误提示,以便更好的了解原因:

技术图片

 技术图片

 

 

(7)找到80站点目录下的web.config文件,编辑

 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>
    

其中rewrite、rules等规则是在完成IIS配置后自动增加的,serverVariables、urlCompression节需要我们手工在web.config中增加进去,注意位置。

(8)保存后,访问weixin.XXX.cn即可访问到8028端口站点,实现无端口体验

(9)8028端口站点与微信进行集成,亲测授权API和JSAPI有效。

IIS8反向代理实现80端口访问多个.NetCore程序

标签:ica   增加   mic   xxx   load   需要   iter   api   sof   

原文地址:https://www.cnblogs.com/cdoneiX/p/13277479.html


评论


亲,登录后才可以留言!