公司一网站未做登陆校验,用户均可以游客身份浏览网页下载附件。无奈,网站内有部分资源被迅雷盗链,深受p2p下载所害,带宽被占,正常用户都无法访问。服务器是tomcat,后研究了一下,采用如下解决方案:
采用Apache Http与tomcat集成,Apache Http处理静态软件资源,tomcat处理动态。在Apache Http配置方面做手脚,限速、限IP。步骤如下(从网上搜集修改整理如下):
一、apache整合Tomcat
1.我是用的是Apache2.2的proxy-ajp(只有2.1及其以后版本才有),整合比较简单。也可以使用mod_jk,但我配置了一天也没弄好。 找到apache 安装目录 下conf 下的文件:httpd.conf。
2.先把apache和tomcat都停止了。然后打开httpd.conf文件,把
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
前面的#号去掉,在文件最后添加
#不转发的目录
ProxyPass /images/ !
#正向代理
ProxyPass / ajp://127.0.0.1:8009/
#反向代理
ProxyPassReverse / ajp://127.0.0.1:8009/
3.最后测试整合后的apache+tomcat,启动apache,再启动tomcat,准备以下代码的jsp文件,以便测试。
<%@ page contentType="text/html;charset=gb2312" %>
<HTML>
<HEAD>
<TITLE>JSP测试页面</TITLE>
</HEAD>
<BODY>
<%out.println("<h1>Hello World! </h1>");%>
</BODY>
</HTML>
保存为test.jsp ,在D:tomcat5.5webappsROOT下新建一个文件夹myjsp,并把test.jsp放在里面。
二、利用apache 限制一个IP可以打开的线程数,能防止第三方软件的多线程下载。注意:此功能不能正确区分公用IP的情况,不建议使用。
LoadModule limitipconn_module modules/mod_limitipconn.dll
ExtendedStatus On
<IfModule mod_limitipconn.c>
<Location /> #需要控制的路径,相对于网站根目录
MaxConnPerIP 3 #限制的线程数
NoIPLimit image/* #对图片文件不做限制 如果仅限制某几种文件请用以下语句,本语句就不要
OnlyIPLimit audio/mpeg video/* application/x-rar #只对音频视频文件,自定义 minetype文件起作用
</Location>
</IfModule>
a、mod_status一定要加载,且httpd.conf中的ExtendedStatus选项要打开。
b、如果要限制特定目录,请使用如下格式:
<Location />
# global per-directory settings here
<Location /somewhere>
# local per-directory settings here
</Location>
</Location>
c、若使用了mod_cache模块,则mod_limitipconn对特定目录的限制无效,只能通过全局参数来限制。
d、对连接数的限制是针对所有IP的,不能针对个别IP进行限制。
e、如果有客户端的超过了限制,则会报503错误。
f、 可以将超过连接数的访问记录到access.log中。
三、利用apache +多个Tomcat 做负载均衡和集群。
1.apache tomcat 简单负载均衡。apache负责处理静态内容,Tomcat负责处理动态内容,httpd.conf 中添加:
ProxyPass /adres/ !
ProxyPass /tebluestand/ !
ProxyPass /tebluestand_20091224/ !
ProxyPass /teredpassion/ !
ProxyPass /teres/ !
ProxyPass / ajp:
ProxyPassReverse / ajp:
2.Apache开启Gzip和Expires提升网页加载速度
在Apache的配置文件中找到下面两行,将注释#去掉,重启。
LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so
在你网站的目录下新建.htaccess,添加如下内容:
LoadModule expires_module modules/mod_expires.so
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType application/x-javascript "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType text/css "access plus 1 month"
</IfModule>
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/png application/x-javascript
</IfModule>
解释一下。ExpiresByType 是通过MIME类型来设置具体文件的缓存时间,A表示访问,A后面的数字表示访问后的缓存时间。AddOutputFilterByType表示根据后面的MIME类型来压缩文件,这里对css,html,gif,jpeg,png,JavaScript等进行gzip压缩。更多选项请参考apache手册哦。
关闭ETag。Etag的问题在于,它是根据可以辨别网站所在的服务器的具有唯一性的属性来生成的。当浏览器从一台服务器上获得页面内容后到另外一台服务器上进行验证时ETag就会不匹配,这种情况对于使用服务器组和处理请求的网站来说是非常常见的。在配置文件中写入下面一行即可:
FileETag none
如果是多服务器负载均衡,可以设置为FileETag MTime Size,apache默认设置为FileETag INode MTime Size,去掉INode。
经过上面的设置,即可开启压缩和缓寸
3.apache图片加载不上
在配置文件中加上EnableSendfile off
四、安全与性能推荐配置
#### 貌似安全相关
#仅当一个请求映射到一个真实存在的路径时才会被接受
#AcceptPathInfo Off
#禁止URL中使用经过编码的路径分割符
#AllowEncodedSlashes Off
#指定内部重定向和嵌套子请求的最大数量(至少是5)
#LimitInternalRecursion 10
#限制客户端发送的HTTP请求体的最大字节长度(1.2M)
#LimitRequestBody 1300000
#限制基于XML的请求体的最大字节长度(1.2M)
#LimitXMLRequestBody 1300000
#<IfModule mpm_prefork_module>
#限制Apache子进程派生的进程占用CPU的最大秒数
#RLimitCPU 1 1
#限制由Apache子进程派生的进程占用的最大内存字节数
#RLimitMEM 1 1
#限制由Apache子进程派生的进程所派生的进程数目
# RLimitNPROC 0 1
#</IfModule>
#禁止生成服务器端生成文档的页脚
ServerSignature Off
#### 性能相关
#在递送中使用内存映射来读取文件(某些情况下需要禁用)
EnableMMAP On
#使用操作系统内核的sendfile支持来将文件发送到客户端
EnableSendfile On
#禁用对客户端IP的DNS查找
HostnameLookups Off
#持久链接(禁用)
KeepAlive Off
KeepAliveTimeout 1
五 apache限速配置
1.下载 mod_bw.dll 文件,注意对应apache版本,放到目录下:Apache Software Foundation\Apache2.2\modules
2.相关配置
1、确定是否有以下两句,如果有,如上面的安装是成功的,如果没有请手动添加试试(
不一定完成相同)
LoadModule limitipconn_module modules/mod_limitipconn.dll
LoadModule bw_module modules/mod_bw.dll
2、找到ExtendedStatus On,如果前面有#号的话要把#号去掉,如果没有这个选项需要自己手工添加
3、配置限速,添加以下语句,配置限速,可根据控制的范围放在全局域或放在虚拟主机域
#这个 module 预设是关闭的,要将他开启才能够使用
BandwidthModule On
#这个 module 预设不会过滤每个需求,如果您开启他,他将处理过滤每个需求
ForceBandWidthModule On
#最大带宽,这个有两个参数。第一个是限制来源的位置,也就是该位置受限制。他可以是完整的 hostname、网域名称或 IP。可搭配遮罩使用,例如 192.168.0.0/24 or 192.168.0.0/255.255.255.0,all代表所有 。另一个参数是限制的速率,以 bytes 每秒为单位;假如为 0,则不受限制。
Bandwidth all 10000 #限速10K
#最小带宽,一般不限制,以下为不限制
MinBandwidth all -1
#大文件下载限制,顾名思义,这设定是专门用来限制大型档案的。第一个参数是指文件名,可以使用 * 代表全部。也可使用 .rar 等,
第二个参数单位是 kbyte,只要超过这个 Size 就被规范在这个设定的限速中,最后一个参数就是被限制的速率,单位是byte/s。
LargeFileLimit * 500 10240 #500kb 10kb/s
4、保存httpd.conf,重启httpd,一切OK。
分享到:
相关推荐
Apache HTTP Server(简称Apache)与Tomcat集成是一种常见的Web服务器架构模式,特别是在Java Web应用领域。通过将Apache与Tomcat进行集成,不仅可以利用Apache的强大静态文件处理能力,还能充分发挥Tomcat作为专业...
Apache和Tomcat集成与集群是Web服务器和应用服务器协同工作的常见模式,主要目的是提升网站的性能和可扩展性。Apache通常作为HTTP服务器处理静态资源,而Tomcat则负责执行Java Servlets和JavaServer Pages(JSP)等...
Apache 与Tomcat 集成配置 具体可参考 http://blog.csdn.net/heng_ji/article/details/50850253 http://blog.csdn.net/heng_ji/article/details/50849184
在Windows Server 2003操作系统环境下,Apache HTTP Server与Tomcat的集成是常见的Web服务器配置,用于构建高性能、高可扩展性的Java应用服务器环境。Apache作为静态内容的强大处理者,Tomcat则专精于执行Java ...
将Apache与Tomcat集成,可以充分利用两者的优势,实现动静分离,提高Web应用程序的性能和稳定性。 集成Apache和Tomcat的常见方式是使用Apache作为前端服务器,处理HTTP请求,然后通过一种叫做代理的方式(如mod_...
当需要在同一个服务器上同时处理静态和动态内容时,Apache与Tomcat的集成就显得尤为重要。 集成Apache和Tomcat主要有两种常见的方法:通过Apache的模块(如mod_jk或mod_proxy)或者使用Nginx作为反向代理。这里我们...
【标题】"tomcat+apache 6.0集成打包"涉及的是在服务器环境中整合Apache HTTP Server与Apache Tomcat的常见技术实践。这个压缩包包含了Apache 2.2.8和Tomcat 6.0.16这两个特定版本,以及JK模块(即mod_jk)的2.0.55...
尽管Tomcat不是完整的Java EE应用服务器,但它与Java EE的其他组件(如EJB)可以通过与其他服务器(如JBoss或Glassfish)集成来支持。 **Linux系统**: Linux是一种自由和开放源代码的操作系统,广泛应用于服务器...
在实际应用中,Tomcat常与其他软件集成,如Apache HTTP Server(通常称为Apache,非此处的标签“阿帕奇”)进行负载均衡和反向代理,提供更高的性能和安全性。Apache HTTP Server是一个流行的HTTP服务器,负责处理...
本文将深入探讨如何将Apache与Tomcat进行集成,以实现高效地运行Java Web应用程序。 Apache集成Tomcat的过程主要是通过Apache的模块mod_jk来完成的。mod_jk是Apache的一个插件,它的主要功能是作为Apache和Tomcat...
在Linux环境下,这个版本的Tomcat可以无缝集成到各种Linux发行版中,如Ubuntu、CentOS或Debian。 部署Apache Tomcat 8.5.27的步骤如下: 1. **下载与解压**:首先从Apache官方网站下载"apache-tomcat-8.5.27.tar....
Apache和Tomcat的集成 Apache和Tomcat的集成是Web服务器领域中非常重要的一个知识点,本节我们将详细介绍Apache和Tomcat的集成过程,从整合Apache和Tomcat构建一个Java/JSP运行平台,详细介绍Web服务器的搭建过程。...
CentOS 操作系统 7.0 64位 Apache Http Server Apache/2.4.6 (CentOS) Tomcat 7.0.39 tomcat-connectors 1.2.41 JDK 1.7.0_79 ...apache http server与tomcat容器的整合集成,使得服务器同时支持PHP和Java。
Apache + Tomcat 集群配置是指将 Apache 服务器与 Tomcat 服务器集成,以提高服务器的性能和可扩展性。本文将详细介绍如何配置 Apache + Tomcat 集群,包括安装 Apache 和 Tomcat 服务器、配置 mod_jk 模块、配置 ...
- **扩展性**:Tomcat 5.5.25可以与其他开源项目如Spring、Hibernate等集成,实现更复杂的应用架构。 在实际使用中,安装Apache Tomcat 5.5.25可能涉及以下步骤: 1. 下载并运行`apache-tomcat-5.5.25.exe`,按照...
最新的apache-tomcat-8.5.42版本+最新的tomcat-cluster-redis-session-manager-2.0.4 配置了JAVA_OPTS,详见bin/catalina.sh及bin/catalina.bat文件 配置了manager账号密码,详见conf/tomcat-users.xml文件 卸载了...
Apache Tomcat是一款开源的Java Servlet容器,主要用于部署和运行Java Web应用程序,特别是那些基于Java EE的Web应用。在Linux环境中,使用Apache Tomcat是开发者和系统管理员常用的工具,因为其性能稳定、配置灵活...
总的来说,Apache Tomcat 9.0.52在Linux环境中的部署和管理涉及到一系列步骤,包括安装、配置、安全管理、监控以及与Apache HTTP服务器的集成。了解这些知识对于管理和维护高效的Java Web服务至关重要。