/ 中存储网

Apache+tomcat环境禁止使用ip访问

2014-02-15 08:24:01 来源:IT技术网
一个项目碰到这样的问题,禁止网站通过IP访问。这样的问题如果web服务器是IIS,就根本不成问题,直接配置就行了。至于IIS怎么配置,很抱歉,我不知道,没用过IIS。

tomcat本身不支持这样的配置,无奈,只能加上apache了。

网上找了很多apache+tomcat的文章,多次尝试,以下方法可行,且已经在用。

1.下载并安装所需文件

1.1 apache2.2.4 (本次使用该版本。验证 Apache 是否可以运行 http://localhost,应可以看到Apache页面

(最新版本下载:http://httpd.apache.org/download.cgi)

1.2 JDK (本次使用jdk-1_6_0_u17)

1.3 TOMCAT (本次使用tomcat6.0)

启动Tomcat ,测试是否安装成功 http://localhost:8080

(最新版本下载:http://tomcat.apache.org/)

1.4 Tomcat Connectors (JK 二进制文件)

JK下载地址(http://apache.etoak.com/tomcat/tomcat-connectors/jk/binaries/win32/jk-1.2.28/)注意选择匹配的apache版本,否则可能配置不成功。

2.配置连接

要点: 最终要实现通过Apache 80 端口可以访问 Tomcat example ,如可以成功运行这些例子,即说明mod_jk 正常工作,因为Tomcat 的缺省端口是8080

为方便起见,创建三个新的环境变量 如:

JAVA_HOME=C:j2sdk1.6

CATALINA_HOME=C:apache-tomcat-60

APACHE_HOME=G:Apache Software FoundationApache2.2

2.1 TOMCAT

2.1.1 编辑CATALINA_HOMEconf 目录下的 server.xml 文件

2.1.2 查找server.xml 带有 server 和 8005 端口的那行,如:!Server port="8005" shutdown="SHUTDOWN" debug="0"!,在下面添加以下语句:

modJk="G:Apache Software FoundationApache2.2modules/mod_jk.so" />

注意1:使用TOMCAT6的情况下,这里的className改为:org.apache.jk.config.ApacheConfig,如果是其他版本,可能是别的。

注意2:modJk里面的文件路径可以是相对于tomcat的路径,这里设为绝对路径。

2.1.3. 在 server.xml 文件 Host 子项处,如:!Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeploy="true"& gt;,添加以下语句

forwardAll="false" modJk="G:Apache Software FoundationApache2.2modules/mod_jk.so" />

注意1:className和文件路径和2.1.2一样。

注意2:forwardAll设为false的时候,只有*.jspx,*.do,*.jsp交给TOMCAT执行,其余的图片,css等文件默认为Apache执行解析;如果设为true,则所有的文件都交由TOMCAT来执行。 2.1.4.检查 Host 名字,确定指向你的Apache Server (缺省为localhost),当然,如果apache 和 tomcat 安装在同一台机器上,且均使用localhost ,则不用修改。

2.2 APACHE

2.2.1 编辑APACHE_HOMEconf 目录下的 httpd.conf 文件。

2.2.2 找到有LoadModule 设置的部分,在后面添加 LoadModule jk_module modules/mod_jk.so

注意:实践中发现其实这个不设置也可以,因为在后面一步加载的mod_jk.conf中已经包含这部分了。

2.2.3 在此文件最后添加 Include C:/apache-tomcat-5.5.15/conf/auto/mod_jk.conf ,

注意:mod_jk.conf 是在Tomcat 启动时自动创建,自动生成的mod_jk.conf 

生成的文件配置为: <IfModule !mod_jk.c>

LoadModule jk_module "G:/Apache Software Foundation/Apache2.2/modules/mod_jk.so"

</IfModule>

JkWorkersFile "G:/Apache Software Foundation/Tomcat 6.0/conf/jk/workers.properties"

JkLogFile "G:/Apache Software Foundation/Tomcat 6.0/logs/mod_jk.log"

JkLogLevel emerg

2.3 创建 workers.properties

这里是配置过程中唯一需要手工建立的文件,CATALINA_HOME/conf/jk 目录(jk目录可手工创建)下的workers.properties,添入以下内容 # BEGIN workers.properties

worker.list=ajp13

worker.ajp13.port=8009

worker.ajp13.host=localhost

worker.ajp13.type=ajp13

# END workers.properties 备注:上述内容比较简单,可以使用一个比较完整的workers.properties

http://www.akadia.com/download/soug/tomcat/html/workers_properties.html

3.测试

3.1 启动TOMCAT,可以看到 Tomcat6conf 目录下有automod_jk.conf 生成。

3.2 待 TOMCAT 启动完成后,启动APACHE。

3.3 访问 http://localhost:8080/examples ,如可以运行例程,说明 tomcat 运行正常

3.4 访问 http://localhost/examples ,如可以运行例程,说明APACHE 与TOMCAT 连接成功,所有JSP 及servlet 请求均被转发给TOMCAT 处理。

以上,已经配置apache+tomcat成功。

以下,将配置apache通过域名访问,且禁止IP访问。 NameVirtualHost 117.25.*.*

<VirtualHost 117.25.*.*>

ServerName 117.25.*.*

<Location "/*">

AllowOverride None

deny from all

</Location>

</VirtualHost>

<VirtualHost 117.25.*.*>

ServerName www.myhost.com

#################### localhost:/SF ####################

# Static files

Alias /* "G:CnRootROOT"

<Directory "G:CnRootROOT">

Options Indexes FollowSymLinks

DirectoryIndex index

</Directory>

# Deny direct access to WEB-INF and META-INF

#

<Location "/WEB-INF/*">

AllowOverride None

deny from all

</Location>

<Location "/META-INF/*">

AllowOverride None

deny from all

</Location>

#

# Use Directory too. On Windows, Location doesn't work unless case matches

#

<Directory "G:CnRootROOT/WEB-INF/">

AllowOverride None

deny from all

</Directory>

<Directory "G:CnRootROOT/META-INF/">

AllowOverride None

deny from all

</Directory>

JkMount /*.jsp  ajp13

JkMount /*.jspx  ajp13

JkMount /*  ajp13

</VirtualHost>