只有Windows服务器,所以在部署测试的时候,为了共用80或443端口,只能用IIS的Reverse proxy来实现。官方只有nginx的文档,这里简单阐述一下IIS里面的配置。
一、IIS环境安装
IIS安装URL Rewrite Module,安装 Application Request Routing(ARR),这个就不累述了,网上很多。
官方的下载地址是:
URL Rewrite : The Official Microsoft IIS Site
Application Request Routing : The Official Microsoft IIS Site
二、reverse proxy配置
正则表达式^(.*),Rewrite的目标是:xxxx://服务器:应用端口/{R:1}
这个也不累述,网上很多介绍的。
三、主要的问题
如果配置不当的话,请求带冒号路径时,会出现400错误。
四、原因分析及解决办法
nocobase的路径中有冒号,违反RFC2396,所以如果应用管道经过了ASP.NET的话,就会被屏蔽。请求在进入UrlRewrite模块之前就被IIS屏蔽了。
所以,在配置站点应用程序池的时候,需要跳过ASP.NET的过滤。默认情况下,一般都会使用.net托管并且是集成模式的。所以需要选择非托管代码或者经典模式。
具体配置如下:
后记
这个问题前后折腾了三天。特此分享,希望对社区朋友有帮助。