IIS 反向代理 Tomcat中的网站

前言

之前说过用ApacheNginx做代理来访问Tomcat中的项目. 现在因工作需要 只能用IIS作为Web服务器来把请求转发到Tomcat

我现在知道的共有四种实现方式

  • 使用isapi_redirect.dll实现
  • Weblogic的插件包中的iisforward.dlliisproxy.dll来实现
  • ARR(Application Request Routing)
  • HttpPlatformHandler

我最终使用的是第三种方式 下面说一下各个方式的优缺点

  • 第一种方式需要修改注册表(网上说的也可以不用添加注册表 我通过这种方式没有成功)
  • 第二种方式 新版本的Weblogic的插件包中不包含iisforward.dll
  • 第三种只支持IIS7以上
  • 第四种 相当于 Tomcat由IIS托管 不但要配置IIS 还有修改Tomcat的默认配置 所以不建议

安装软件

在Win10以下的系统中直接在官网下载ARRMicrosoft URL 重写模块 2.0 安装就可以了

但是 他要求的IIS7以上 却不能识别Win10上的IIS10 但其实是能用的 这里放出我修改过的安装包ARRMicrosoft URL 重写模块 2.0

安装之后重启iis

iisreset

配置

安装完成后 在服务器级别的功能试图中 会多出两项

  • Application Request Routing
  • URL重写

网站级别的功能试图中 会多一项

  • URL重写

点击 Application Request Routing后 点击右边的Server Proxy Settings 勾选Enable proxy后 点击右侧的应用

点击项目级别的功能试图中的URL重写

首先需要知道的是 IIS不能配置如Apache中的ProxyPassReverseCookiePath /yxemail /来矫正Cookie的路径 所以IIS配置反向代理的时候就不能带项目名 带项目名就会导致Session失效 也就是说IIS做反向代理 又要考虑Session 就必须去掉Tomcat中项目访问链接中的项目名 Tomcat中要配置一个HOST IIS中要配置URL地址的入站规则HTTP响应头或内容的出站规则

配置Tomcat

<Host name="www.aaa.com"  appBase="C:/Program Files/Tomcat 7.0/webapps_me" unpackWARs="true" autoDeploy="true">  
	<Context path="" docBase="yxemail" debug="0"/>  
</Host>

需要注意的是 appBase一定要换一个路径 因为每个HostappBase中的项目 在Tomcat启动时会重新加载 所以多个Host中的appBase一样的话 就会导致一个项目被加载多遍

这样 网站目前可以用www.aaa.com:8080访问

配置IIS

添加一个网站 主机名设置为www.aaa.com 端口80

点击 URL重写

入站规则

添加规则 选择入站规则中的空白规则

设置项名称

设置项内容

名称

随便写

模式

(.*)

条件

{SERVER_PORT}设置为80{HTTP_HOST}设置为www.aaa.com

重写URL

http://www.aaa.com:8080/{R:0}

出站规则

所谓的出站规则就是返回的html内容根据规则替换里面的url

添加规则 选择出站规则中的空白规则

设置项名称

设置项内容

名称

随便写

匹配范围

响应

匹配一下范围中的内容

除自定义外全选

模式

(.):8080/(.)

操作类型

重写

操作属性

http://www.aaa.com/{R:2}

这样的话就能用www.aaa.com来访问www.aaa.com:8080的网站了

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数据森麟

2000万条直播数据,揭秘斗鱼主播生存现状

本文转载自凹凸玩数据 2019年7月17日游戏直播平台斗鱼在美国纳斯达克股票交易所成功上市,成为继虎牙直播之后第二家赴美上市的国内直播平台。

12920
来自专栏数据森麟

Python批量下载无版权图片

生活或者工作中,不管是写文章、公司 UI 交互图还是广告图等等都需要用到图片,图片的优点和重要性自不用说。

9210
来自专栏python语言学习

django 请求 与 响应

注意:键值对的值是多个的时候,比如checkbox类型的input标签,select标签,需要用:request.POST.getlist("hobby")

11920
来自专栏python语言学习

web框架原理,http 协议

#思考: """ 用户在浏览器中输入网址,浏览器会向服务端发送数据,那浏览器会发送什么数据?怎么发?这个谁来定? 无规矩不成方圆, 所以必须有一个统一的规则,让...

8610
来自专栏程序猿讲故事

CAS Client集群环境的Session问题及解决方案

之前写过一篇文章,介绍单点登录的基本原理。这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法。并结合实际工作中碰到的问题,探讨在集群环境中应用单点登录...

8820
来自专栏数据森麟

为什么大部分的码农都做不了架构师?

一般来说技术团队的金字塔顶尖往往是技术最牛的人做架构师(或TL)。所以架构师在广大码农中的占比大概平均不到 20%。

9520
来自专栏python语言学习

django 路由系统

#注意事项 1 urlpatterns中的元素按照书写顺序从上往下逐一匹配正则表达式,一旦匹配成功则不再继续。 2 若要从URL中捕获一个值,只需要在它周围放置...

10730
来自专栏程序猿讲故事

CAS的登录和注销原理

之前写过一篇文章,介绍单点登录的基本原理。这篇文章重点介绍开源单点登录系统CAS的登录和注销的实现方法。并结合实际工作中碰到的问题,探讨在集群环境中应用单点登录...

17940
来自专栏python语言学习

初识爬虫

10920
来自专栏数据森麟

一文搞懂各大APP&网站python网络爬虫

很久以前写了一篇爬虫的文章,把它放在CSDN上(livan1234)没想到点击量竟然暴涨,足以看到大家在数据获取方面的需求,爬虫技术现在已经非常普遍,其用途也非...

18210

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励