利用Weblogic的iisproxy、iisforward插件实现IIS转发
默认情况下,IIS只能提供http重定向功能,而无法满足转发需求。
举例:http://localhost/app1 利用http重定向到 http://www.abc.com/app1
访问 http://loalhost/app1/abc.html 最终浏览器地址栏里的url会变成http://www.abc.com/app1/abc.html
这就是重定向(类似jsp中的SendRedirect),如果浏览器地址栏不变,那才叫转发(类似jsp中的forward)。
通常weblogic/jboss应用,前端都是通过apache来转发的,但利用weblogic提供的插件,IIS也能实现类似的功能
weblogic安装目录下X:OracleMiddlewarewlserver_10.3serverpluginwinx64 下有2个文件:iisforward.dll、iisproxy.dll,通过它可以让IIS实现转发。
步骤:
1、在指定位置创建站点根目录,比如:D:website ,并将iisforward.dll复制到此
2、根目录下,再创建子应用目录,比如app1,即:D:websiteapp1,然后将iisproxy.dll复制一份到该目录,创建一个名为iisproxy.ini的文件,内容参考下面:
1 WebLogicHost=localhost
2 WebLogicPort=8080
3 ConnectTimeoutSecs=20
4 ConnectRetrySecs=2
5 Debug=ON
6 WlForwardPath=/app1
解释一下:
第1行,表示weblogic(或jboss)等其它webserver的IP地址
第2行,表示weblogic(或jboss)等其它webserver的端口
第6行,表示weblogic(或jboss)等其它webserver上对应的app的contextPath
3、在D:website下,新建一个iisforward.ini,内容参考下面:
1 vhost1=localhost:80
2 localhost:80=D:Websiteapp1iisproxy.ini
第1行,表示iis server对应的ip和端口 第2行,指定vhost1对应的配置从D:Websiteapp1下的iisproxy.ini读取
如果有多个虚拟主机,参考这个结构再继续添加即可
4.在IIS中,添加应用程序集app1,同时在要转发的站点下,添加应用程序app1
5.在要代理的站点上,添加"ISAPI筛选器"
参考下图:
6.在应用app1上,添加"处理程序映射"
参考下图:
最后还可以检查一下
正常的话,应该可以看到刚才添加的处理程序,状态为允许,如果状态不是允许,请手动调整为允许状态
7、iisreset /restart 重启IIS
打完收工!
附目录结构:
D:Website │ iisforward.dll │ iisforward.ini │ ├─app1 │ iisproxy.dll │ iisproxy.ini │ web.config │ └─app2 iisproxy.dll iisproxy.ini web.config
注:web.config 是添加完映射处理程序后,iis自动生成的,内容为:
1 <?xml version="1.0" encoding="UTF-8"?>
2 <configuration>
3 <system.webServer>
4 <handlers>
5 <add name="weblogic iis proxy" path="*" verb="*" modules="IsapiModule" scriptProcessor="D:websiteapp1iisproxy.dll" resourceType="Unspecified" preCondition="bitness64" />
6 </handlers>
7 </system.webServer>
8 </configuration>
一切顺利的话,就能看到效果了:
这是jboss上的原始应用app1
这是经iis转发后的效果:
- 在不动用sp_configure的情况下,如何 =》去掉列的自增长,并保留原数据
- iOS runtime探究(一): 从runtime开始理解面向对象的类到面向过程的结构体你要知道的runtime都在这里
- iOS runtime探究(二): 从runtime开始深入理解OC消息转发机制你要知道的runtime都在这里
- SpringMVC 启动流程及相关源码分析你要知道的SpringMVC启动流程和源码分析都在这里
- iOS runtime探究(四): 从runtiem开始实践Category添加属性与黑魔法method swizzling你要知道的runtime都在这里
- C# 复制PDF页面到另一个PDF文档
- Java8 Lambda表达式与Stream API (一):Lambda表达式你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里
- iOS runtime探究(五): 从runtime开始深入weak实现机理你要知道的runtime都在这里
- Java8 Lambda表达式与Stream API (二): Stream API的使用你要知道的Java8 匿名内部类、函数式接口、lambda表达式与Stream API都在这里
- Python Garbage Collection 与 Objective-C ARCPython GC 与 Objective-C ARC
- SpringMVC DispatcherServlet执行流程及源码分析你要知道的SpringMVC DispatcherServlet执行流程及源码分析都在这里
- iOS runtime探究(三): 从runtime开始理解OC的属性property你要知道的runtime都在这里
- jQuery选择器大全(48个代码片段+21幅图演示)1
- KVC 使用方法详解及底层实现你要知道的KVC、KVO、Delegate、Notification都在这里
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法