使用两个IP实现IIS和Tomcat或Apache公用80端口的方法

  前段时间有个JSP网站要在服务器上部署,由于服务器上根本没配置过jsp环境,于是装了Jdk和Tomcat,过程还算顺利,很快就安装好了,但是Tomcat的默认端口是8080,访问网站也带个端口多么不爽,于是第一个想到的便是跟IIS6.0整合,baidu google了大半天,搜出来文章倒是很多,也不知是由于我安装的是最新的JDK和Tomcat,的原因还是其他原因,总之就是不成功,换了两台服务器也没配置成功,到最后不是不能正确运行,就是提示函数不正确,到网上搜,很多人问之类的问题,但几乎没有人正了把经回答的,有些“热心”的倒还说两句“重装一下看看?”“再从头到尾检查一遍试试”。。。算了还是自己搞吧。
矂>?淪2?2q €a噝d膟 唕8唎鑖i8噚(u(6q槆x竾|x噡8?圛訃?唵h嘓槇??媓1堷垿(j妦笂壆榞皒姠8嫐X媬"嫺hb焊嫮貗m
  继续搞啊搞,还是不行,最后干脆不搞了,心想即使弄好了,性能还不知怎么样呢。于是想另外的解决方法,因为服务器所在的网络有空闲的ip,便想何不让IIS用一个ip,Tomcat用一个ip,都使用80端口?问了几个人都说不行,两个软件用同一个端口那不冲突么,也有的说两个ip那得需要两块网卡啊。服务器上倒是有两块网卡,但就插了一根网线,另一个闲着。我就是要用一块网卡,两个ip,iis与Tomcat分别监听不同ip的80端口,OK,开始吧。
桾?琔隨Jy?坏蚣搐O酚eA?硊?L淰塋?广乿R聕Za>Ml!昳汉B婬]?]阦岷緔  
  我们知道IIS默认情况下是监听所有ip地址的80端口的,也就是说,在网站属性中只要选择“全部未分配”,则该网站就可以使用所有本机可用的ip地址。显然这个不符合我们现在的要求,我们首先将IIS所有站点当中全部改为指定IIS要监听的IP地址,包括默认站点,例如全部改为61.156.31.1。再在网卡中加一个ip,也就是在TCP/ip高级属性中再加一个可用的ip,这样一块网卡就可以使用两个或更多个ip了,看似很简单的操作可能有很多人不知道,认为一块网卡只能设一个ip,呵呵。
<31P1??(蔪D潑竅忚r藌?,?^\冾H3吸O?匤m;[B4F儧H=莬偛覼A5>8?C€?]?`#糘5j鶎Ii
  接下来最关键的一步开始了,便是禁用IIS的套接字池(如果这一步没调好,便不会成功),在微软官方网站上有解释:

http://support.microsoft.com/kb/238131/zh-cn

   概要
在下列情况下,您可能需要禁用套接字池: 
1、承载的站点数目不多。 
2、有特殊的安全考虑。 
3、另一个应用程序或服务器需要某个 IP 地址上的端口 80。 
a犡C?僠?俲- b!d'J2f?{A1案?朄惸?7U)??qK:1P(鶷w陾臵?隷&?楻$9_f鱬?H|9+牗①慛郈睻扲懕弊
更多信息
    套接字池会导致“Internet 信息服务”(IIS) 侦听所有 IP 地址,这样,可能会对具有多个网络的安全域造成安全隐患。另外,带宽调节和性能调整会应用于所有针对同一端口(例如,端口 80)进行配置的 Web 站点。如果基于每个站点进行带宽调节或性能调整,则必须禁用套接字池。 

    由于 DisableSocketPooling 在 IIS 6.0 元数据库架构 (MBSchema.xml) 中被定义为有效属性,所以,您仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序HTTP.sys 的一部分。要配置 HTTP.sys,您必须使用Httpcfg.exe。 有关如何在 IIS 6.0 中禁用套接字池的其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章: 
813368 (http://support.microsoft.com/kb/813368/) IIS 6.0:设置配置数据库数据 DisableSocketPooling 没有作用 
舡懆鄣2B磵(斅ㄔAi┹洸萨7?筝棴{,D歖K茱c?SC    椏?嗣袰萳&A4D窽L?摣7矷P谋軯EtqE?*[4V[
    要禁用套接字池,请执行下列步骤: 
1. 打开命令提示符并确保您位于 X:\Inetpub\Adminscripts 文件夹(其中 X 是 IIS 安装驱动器)中。为此,请在命令提示符下键入以下

行:
X:

CD\Inetpub\Adminscripts 
 
2. 打开 Adminscripts 文件夹后,请在命令提示符下键入以下行:
cscript adsutil.vbs set w3svc/disablesocketpooling true 
3. 该命令反馈如下:
disablesocketpooling :(BOOLEAN) True  
4. 停止 IIS Admin 服务,然后再启动它。 
5. 重新启动 WWW 服务。 

歷蹰珖氍舶夦鷏罾.{m?C鹠谠n{n簑傷钅洚{o镜汽铼纛{p?7??W柬?颪缗#镗q?J\r蘗畖s?宵髗9哕s蠯U羰I7}u0Q

   好了,接下来设置IIS要监听的ip地址。到2003的CD下的 support/tools/Support.cab。解压出httpcfg.exe文件,COPY到

windows/system32/目录下,用法自己看帮助
命令行:
绑定到某IP: httpcfg set iplisten -i 61.156.31.1
即命令使用IIS的只监听指定的IP及端口
查看绑定: httpcfg query iplisten 
删除绑定: httpcfg delete iplisten -i 61.156.31.1

G7?b銬捽RオTK岼圧l杩€"i?瓣?TE寔劎t腈?O?e?癥l~鑄?}h煦K祱U.疀??/"!篐
   IIS部分到此就设置好了,接下来设置Tomcat,当然或者你用Apache,Resin等也都可以,在Tomcat的配置文件Server.xml里找到
匬墋?鳹跟k懡幑佣且?关鈸薻A=?訝?⑤?靦W ㄝ?X_<亿g碘€?拷?u4疆
    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443"/>

    <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000"  redirectPort="8443" address="61.156.31.2"/>
黔tm?8|{
儭owx踧埵㎝奼 滪y?dZ架g赳觽疕>r_頔]?+S 謦T@*?蛭.甆

在后面添加上需要Tomcat监听的ip地址即可,例如:address="61.156.31.2"  Apache,Resin或者其他WEB服务器软件都应该有相应的设置的,自己找一下即可。
納6斆]Q]/ms[茋V棰麃棵m?€餈臔?.d匦a
    好了接下来重启IIS,重启Tomcat或Apache,怎么?启动失败?提示端口占用?是啊,我也遇到这种情况,捣鼓了大半天要是再不成功我就要放弃了。实在无奈之下重启了一下服务器,哇,好啦。测试一下61.156.31.1访问的是IIS,61.156.31.2访问的是Tomcat可爱的大猫。

Xm=?H5:?M嫾仌M匬墋?鳹跟k懡幑佣且?关鈸薻A=?訝?⑤?靦W ㄝ?X_<亿g碘€?拷?u4疆M邗??

    实际上,实现IIS和Apache或Tomcat公用80的方法还很多,例如IIS设置8080,Apache设置80,利用Apache反向代理IIS的8080,或者在IIS中安装IIS的Isapi Rewrite,利用IIS的反向代理代理Apache,当然如果IIS站点少,Apache站点多就用第一种方法,IIS站点多,Apache站点少就用第二种方法,但这两种方法在性能上都不是很好,Apache在Windows下的反向代理也有BUG,经常出现Proxy Error的提示,至于IIS的反向代理没用过,因为IIS的ISAPI带反向代理功能的是要收费的。

原创文章,转载请注明出处!
[本日志由 Admin 于 2008-11-01 08:33 AM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags:
评论: 3 | 引用: 0 | 查看次数: 7658
发表评论
昵 称:
密 码: 游客发言不需要密码.
验证码: 0+5=?
内 容:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册账号.
字数限制 500 字 | UBB代码 关闭 | [img]标签 关闭