当前位置:   article > 正文

IIS8.5反向代理实现80端口访问多个.NetCore程序_看不到application request routing 检查was跟 wmsvc是否已经启动

看不到application request routing 检查was跟 wmsvc是否已经启动

背景:

      目前仅有一台域名备案并开通80端口的服务器,而有多个部署在此服务器的.NetCore程序需要与微信进行独立的集成(同一个认证微信服务号),因此需要实现非80端口反向代理外网80端口,例如通过a.test.com和b.test.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,实现二级域名反向代理

如果安装后找不到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中看到:

 

 

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

 

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

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

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

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

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

 

 

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

  1. <rewrite>
  2. <outboundRules>
  3. <rule name="ReverseProxyOutboundRule1" preCondition="ResponseIsHtml1" stopProcessing="false">
  4. <match filterByTags="A, Form, Img" pattern="^http(s)?://weixin.XXX:8028/(.*)" />
  5. <action type="Rewrite" value="http{R:1}://weixin.XXX.cn/{R:2}" />
  6. </rule>
  7. <preConditions>
  8. <preCondition name="ResponseIsHtml1">
  9. <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
  10. </preCondition>
  11. </preConditions>
  12. </outboundRules>
  13. <rules>
  14. <rule name="ReverseProxyInboundRule1" stopProcessing="true">
  15. <serverVariables>
  16. <set name="HTTP_ACCEPT_ENCODING" value="" />
  17. </serverVariables>
  18. <match url="(.*)" />
  19. <action type="Rewrite" url="http://weixin.XXX.cn:8028/{R:1}" />
  20. </rule>
  21. </rules>
  22. </rewrite>
  23. <urlCompression dynamicCompressionBeforeCache="false" />

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

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/599130
推荐阅读
相关标签
  

闽ICP备14008679号