IIS 请求转发 Tomcat 的两种方式,看了很多网上资料,亲测第二种方便,记录一下
环境准备
1.确保本机的 tomcat 服务器下项目能正常访问,输入 http://localhost:8080 , 能访问到项目。
(jdk1.8.0_201 + apache-tomcat-8.5.38 的 webapps 下面放我的项目文件夹 root)
在这里插入图片描述
2.确保 IIS 服务配置完善,访问 http://localhost 网页能出现。如下界面
(IIS 配置可查看其他播客资料)
一、第一种:用 isapi_redirect.dll 文件,接通Tomcat 与 iis
isapi_redirect.dll 下载
apache 官网下载地址如下:
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/win64/jk-1.2.31/amd64/isapi_redirect-1.2.31.dll
或者在此路径下下载:
https://download.csdn.net/download/weixin_45447134/20546966
1.将 这三个文件放在 apache-tomcat-8.5.38/conf 目录下面
·isapi_redirect.dll
·workers.properties
·uriworkermap.properties
workers.properties 文件内容(要与自己的路径对照):
workers.tomcat_home= D://apache-tomcat-8.5.38
workers.java_home= C://Program Files//Java//jdk1.8.0_201
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
uriworkermap.properties文件内容(要与自己的路径对照):
/*.jsp=ajp13
/*.do=ajp13
/*.*=ajp13
2.在桌面新建注册表文件:IIS_Tomcat.reg(要与自己的路径对照),双击启动安装
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ApacheSoftwareFoundation\Jakarta Isapi Redirector\1.0]
"extension_uri"="/jakarta/isapi_redirect.dll"
"log_file"="D://apache-tomcat-8.5.38//logs"
"log_level"="debug"
"tomcat_start"="D://apache-tomcat-8.5.38//bin//tomcat.batstart"
"tomcat_stop"="D://apache-tomcat-8.5.38//bin//tomcat.batstop"
"worker_file"="D://apache-tomcat-8.5.38//conf//workers.properties"
"worker_mount_file"="D://apache-tomcat-8.5.38//conf//uriworkermap.properties"
之后查看注册表:Win+R,输入regedit,查看:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ApacheSoftwareFoundation\Jakarta Isapi Redirector\1.0
3.在IIS中配置站点:
① 选中 -->网站,右击–>添加 网站(注意端口不要用被占用的)
② 选中 新建的网站–> 添加虚拟目录:
物理路径为:isapi_redirect.dll 所在的目录
③选中服务器名称–>双击进入 ISAPI和CGI限制,右侧操作下面–>添加,如下图,确定
④选中 新建的网站–>双击ISAP筛选器,右侧操作下面–>添加,如下图,确定
⑤选中 新建的网站–>双击处理程序映射,操作–>添加脚本映射,如下图,确定
可执行文件 路径是 isapi_redirect.dll 放置路径
之后–>编辑功能权限–>全打钩–>确定:
⑥选中 新建的网站–>默认文档–>添加–>首页
到此完成:
输入 :www.exam.cn 相当于 localhost:8080
输入你的域名(需要在tomcat的 server.xml中配置域名)就可以直接访问你的javaweb项目了,而不用再加8080端口了。当iis接受到一个jsp网站isapi_redirect会转发到tomcat处理,然后将处理结果再返回给客户。
tomcat的 server.xml中配置域名:
<Engine name="Catalina" defaultHost="www.exam.cn">
...
<Host name="www.exam.cn" appBase="webapps"
unpackWARs="true" autoDeploy="true">
...
</Host>
</Engine>
到这里,网友们都说效果出来了,但是诡异的一幕出现了。。。
我的访问一直 报 404.17 (请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理) 查询资料说是 asp.net 4.x 的版本 没注册上,在这里反复试了几次也没有用,最后解决的方法是用第二种 反向代理的方式新建的网站,然后神奇的是第一种方式建的网站也能正常使用了。。。(不知道是不是第二种方式种新加了什么文件导致的)
下面说一下第二种方式:反向代理
环境需求:
在使用反向代理前,我们需要在IIS中安装 ARR 工具和 URL Rewrite 。
·–> 微软官方 提供安装方式,很快的: Web平台安装程序
1.安装完成后打开IIS ,选中服务器–>可以看到两个新功能( Application Routing Request 、URL 重写)
2.双击 Application Request Routing -->选择 Server Proxy Settings
3.选中–>新建站点–>双击URL重写–>右侧操作–>添加规则–>空白规则
4.添加配置
名称随意
模式写 ^(.*)
添加条件 - 条件输入 {HTTP_HOST} 模式输入 ^a.exam.cn$
操作类型默认重写
重写URL :http://127.0.0.1:8080/{R:1} ,这个链接表示要跳转的地址
5.在浏览器访问 www.exam.cn
这时候试了第一种方式创建的站点也能正常访问。
ps:两个站点的 浏览网址一样,端口一样都为 80,所以同时只能启动一个 网站。
总结:
1、IIS 整合 Tomcat 第二种方式比较方便。
2、局域网中要想都通过域名访问 iis的站点, 每台电脑都要配置 hosts文件进行解析域名
3、最后发现 内网穿透 更加简单粗暴,果断舍弃局域网 访问的这种方式。