今天想在服务器上安装一个TOMCAT,因为已经有IIS。所以想通过反向代理方法实现。
了解到微软IIS有一个插件与NGINX是一个功能,虽然说NGINX在网上都说性能爆炸怎么样的,但IIS已经占用80端口,不想再改。所以直接用ARR了。
安装ARR的时候,需要解决依赖问题,在下载界面最下方有介绍,https://www.iis.net/downloads/microsoft/application-request-routing
需要三个依赖
URL Rewrite
Web Farm Framework
External Cache module
而这三个依赖安装的时候,又需要其他依赖,不过慢慢装就行了。只要全装上,不会有问题。有中文选中文,没中文就用英文。
但我这里出了一些小问题。全部安装好后,IIS提示 未能加载文件或程序集
IISMANAGER_MODULE_INITIALIZATION_THREW_EXCEPTION
“ApplicationRequestRouting”类型的模块“Microsoft.Web.Management.Arr.ArrModule, Microsoft.Web.Management.Arr.Client, Version=7.2.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”的 Initialize 方法引发了异常。
异常:System.IO.FileNotFoundException: 未能加载文件或程序集“Microsoft.Web.Management.WebFarmClient, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项。系统找不到指定的文件。
文件名:“Microsoft.Web.Management.WebFarmClient, Version=7.1.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
在 Microsoft.Web.Management.Arr.ArrModule.Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo)
在 Microsoft.Web.Management.Client.Connection.Initialize(WebManagementInfo webManagementInfo)
刚开始以为是文件权限问题,整了半天没用,后来重装也没用。
最后在事件日志里发现提交错误报告时的介绍里写的.NET 2.0 模式:经典。而百度搜索此类问题的解决方法都是需要将应用程序池改为兼容32位。但我设置完之后没用。
后来把所有应用程序池改为集成,就可以用了。
ARR全称:Application Request Routing Cache
使用方法,点IIS根目录,双击Application Request Routing Cache,以右侧点开启服务代理,应用即可,不需要设置,默认即可。
然后在需要反向代理的网站上配置一下URLWrite即可。
写法:
新建空白规则
名称随意
模式:^(.*) //所有请求
条件:{HTTP_HOST} 访问域名
{HTTP_HOST}不带WWW的访问域名
//任一匹配
重写:http://127.0.0.1:8080/{R:1}
就可以了,这样的好处是IIS还是IIS,也不影响IIS中的其他站。而且TOMCAT是独立的与IIS无关,你可以在TOMCAT里面随意建站修改配置文件等等。也可以在IIS里随意建站.相互不影响。
当你需要JSP站的时候,在TOMCAT把端口改了,不要设置主机头,因为不行,
然后在IIS新建网站,指定任意目录,但需要能读取的,因为要读取web.config文件来实现反向代理。。
按上面写法写入规则,重写后的端口改为新TOMCAT站的端口即可。反正外面看不到,所以端口无所谓了。只要不跟系统或其他软件冲突就行。
防火墙也不需要开8080等TOMCAT的端口,因为这里是内部反向代理,根本不需要外网。