使用两个IP实现IIS和Tomcat或Apache公用80端口的方法
发布:Admin 日期:2008-07-09
前段时间有个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,呵呵。
<31P1??(蔪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带反向代理功能的是要收费的。
原创文章,转载请注明出处!
矂>?淪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,呵呵。
<31P1??(蔪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带反向代理功能的是要收费的。
原创文章,转载请注明出处!
评论: 3 | 引用: 0 | 查看次数: 11924
发表评论
上一篇
下一篇

文章来自:
Tags: 
