fcghr 发表于 2015-8-13 13:57:07

利用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:\Oracle\Middleware\wlserver_10.3\server\plugin\win\x64 下有2个文件:iisforward.dll、iisproxy.dll,通过它可以让IIS实现转发。
  步骤:
  1、在指定位置创建站点根目录,比如:D:\website\ ,并将iisforward.dll复制到此
  
  2、根目录下,再创建子应用目录,比如app1,即:D:\website\app1,然后将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:\Website\app1\iisproxy.ini
  第1行,表示iis server对应的ip和端口
第2行,指定vhost1对应的配置从D:\Website\app1下的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:\website\app1\iisproxy.dll" resourceType="Unspecified" preCondition="bitness64" />
6         </handlers>
7   </system.webServer>
8 </configuration>
  一切顺利的话,就能看到效果了:
  这是jboss上的原始应用app1

  这是经iis转发后的效果:
页: [1]
查看完整版本: 利用Weblogic的iisproxy、iisforward插件实现IIS转发