Tomcat 问题:允许www.mydomain.com:8088可以访问而杜绝其他访问tomcat

悬赏:15 发布时间:2008-07-23 提问人:zhudeli (初级程序员)

我现在有一个客户急需解决的问题,我已经使出了浑身解数,搞了很长时间,没有解决,希望能得到你的 帮助:

  我的服务器安装tomcat后,端口设置为8088,访问和使用都没有问题,问题在于使用202.20.202.2:8088可以访问,www.mydomain.com:8088 可以访问,使用www.otherdomain.com:8088也可以访问(有许多域名映射到我这个IP),而IP访问和otherdomain访问都是不允许的,请问如何只 允许www.mydomain.com:8088可以访问而杜绝其他访问tomcat的方法?
   我非常着急,不知道你能帮我么?
问题补充:
非常感谢sunsong,qdzheng,nihongye等朋友的帮忙,可能是我的表述有问题。现再说说:
有许多域名映射到我这个IP,而且这些域名都是IIS解析的,端口为80。我现在安装了tomcat,配置端口为8088,也进行了设置:
<Engine ... defaultHost="www.mydomain.com">    
   <Host .... name="www.mydomain.com">    
    ....  
   </Host>    
</Engine>   

但是,在客户端除了www.mydomain.com:8088可以访问外,www.otherdomain.com:8088也可以访问,我现在不想要www.otherdomain.com:8088可以访问,如何办。
   熬了个通宵,配置过catalina.valves.RemoteHostValve也不行。希望大家能帮忙。谢过。
问题补充:
这个问题就犹如“只允许域名访问,不允许IP访问,tomcat怎么设?”请大家帮忙哦!
该问题已经关闭: 没有解决。

回答

看的有点糊涂,你是遇到了ip不能访问的问题,还是需要ip不可访问?
另外,把你的server.xml贴来看看
sunsong (初级程序员) 2008-07-23
在你的server.xml中指定host的name属性,以及并修改的Engine的defaultHost属性,类似这样配置:
<Engine ... defaultHost="www.mydomain">
   <Host .... name="www.mydomain.com">
   </Host>
</Engine>
qdzheng (中级程序员) 2008-07-23
上面的那个有误,Engine defaultHost属性值要和Host name属性值一致。
<Engine ... defaultHost="www.mydomain.com">  
   <Host .... name="www.mydomain.com">  
    ....
   </Host>  
</Engine>  
qdzheng (中级程序员) 2008-07-23
defaulthost设置为其它的,或者随便写一个
nihongye (中级程序员) 2008-07-23
defaultHost必须指定为Engine中包含的Host之一,担心楼主Engine中只有一个Host,才那样写。

文档是这样说的:
... This name MUST match the name  attributes of one of the Host elements nested immediately inside.
qdzheng (中级程序员) 2008-07-23
用request.getServerName()来得到Server的host,然后判断是否给于访问
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath()+"/";
xidou (初级程序员) 2008-07-23
1. 补习一下域名的知识(因为楼主居然说出域名是iis解析这样的傻话)
2. 好好看一遍tomcat的文档(特别是如何配置virtualhost)
hax (中级程序员) 2008-07-24
通过<filter></filter>来进行域名过滤
将不允许访问的域名过滤掉

eg:(比如对所有的.do进行拦截)
<filter>
  	<filter-name>urlFilter</filter-name>
  	<filter-class>com.lzkj.filter.urlFilter</filter-class>
</filter>
<filter-mapping>
  	<filter-name>urlFilter</filter-name>
  	<url-pattern>*.do</url-pattern>
  </filter-mapping>


再编写一个filter类进行相应的拦截。
具体思想大概是这样……
jacky68147527 (初级程序员) 2008-07-24
在tomcat添加一个host,设置为defaulthost,这个host啥内容都不要不就ok了吗?
nihongye (中级程序员) 2008-07-24