Articles of apache 2.2

优化Apache

我一直在阅读Apache的多个优化指南,并发现了很多数据(虽然我不知道作者的经验是什么)。 我有一个生产服务器与Apache 2.2.3,MySQL 5.1.36,Centos 5.3,Nginx充当反向代理服务器(和处理静态文件)。 我的主要问题是我有大约10个httpd进程每个占用56-60MB RAM,每15分钟我通过一个crond(每个占用30MB)启动10个php进程。 基本上我正在使用默认的httpd.conf(是的,我知道,这是不好的),我刚刚调整了MPM的最大客户端和其他属性控制多less客户端shundld分叉,并安装nginx减轻Apache的负载。 我会很高兴我可以做什么样的优化我的httpd(我知道我应该卸载很多模块,但我有点害怕比删除的东西可能会打破我的申请)。 21969 root 16 0 145m 30m 6872 S 1.3 0.9 0:00.75 php 6031 apache 16 0 289m 59m 35m S 1.0 1.3 0:05.01 httpd 另一个输出为我正在运行的过程之一: [root@www /]# pmap -d 6031 6031: /usr/sbin/httpd Address Kbytes Mode Offset Device Mapping 00002b8b622e4000 308 rx– 0000000000000000 008:00003 httpd 00002b8b62331000 100 […]

重复/不间断地点击页面,空白引荐,非恶意

上周我问了这个问题,并遵循了debuggingbuild议,现在有了更多的信息。 我有一个奇怪的问题 – 在一个高stream量的网站上(每月有数百万的访问者),每天我们得到大约20个左右的情况,一个主机开始不断请求同一页面,每秒多次 – 从几分钟到一整天的任何时间长度。 这次攻击显然不是恶意的,因为我已经回溯了IP地址,并将其与我采访过的一些注册用户进行了匹配。 他们说,当这种情况发生时,他们的电脑变慢了,但是否则可以使用。 这不会发生在每一页的负载,而是零星的。 日志命中有以下特点: 他们开始“正常” – 首页加载实际上访问所有页面的资源(图像等),以及.php 然后主机开始请求只是PHP页面,没有资源不断,通常每秒(但有时更快,有时慢几秒) 远程浏览器总是Firefox 3.x(我们已经看到高达3.5.3和低至3.0.2) 即使第一个页面请求有一个,后续的点击也没有引用 只要访问者在该特定页面上,这种情况就会持续下去,而下一页加载通常是正常的 用户经常忘记发生了什么 – 他们的页面没有重新加载,所以发生在他们的背景下,我相信Firefox只是把信息扔掉 这发生在静态(例如,联系人)和dynamic页面(例如邮箱) 受影响的主机的IP分配没有我能辨别的相似性(例如,它们并不都是企业防火墙的后盾) 我们认为页面上的一个错误的JavaScript可能导致它,但完全禁用JavaScript并没有影响到所有的问题 我们终于明白如何处理这件事。 一个简单的DoSfilter是不合适的 – 我们拥有这个filter,触发它的阈值远高于单个页面请求(没有相关的图像,CSS等)。 我们还安装了mod_evasive,但是这并不能捕捉到这些,因为我们有一个多服务器系统,并且是以每个孩子为基础运行的。 该堆栈是LAMP,Redhat安装,PHP 5.2,Apache 2.2.3,NGINX框在多个Web服务器和数据库后端作为软件负载均衡器运行。 在没有好的想法的情况下,我们采用在memcached中编写我们自己的虚拟filter,在memcached IFF中存储IP + URI的密钥,用户是Firefox 3.x,并且引用者是空白的,并且递增每个页面请求。 一旦在一段时间内超过一定的门槛,我们还有403个要求。 但是,我不认为这是networking堆栈中处理这个问题的适当的地方。 希望有人看到这些,可以帮助我们find模式。 感谢您的贡献!

禁止发布代理

我想禁止在我的网站上发布代理和垃圾邮件。 最好的办法是什么? 我已经下载了一个黑名单,我的第一个想法是禁用我的.htaccess文件中的每个ips,但是在下载完这个列表之后 ,我发现它包含了近900万个条目。 我的另一个想法是将每个IP分成4部分,并在POST中执行[1; 4]连续的SQL查询。 但是,如果我可以将这些值caching在内存中,我可以用像(:200(:188(:10(:42))))之类的东西来检查它们。 这是可以用PHP? 谢谢!

如何在Ubuntu上设置Apache 2上的虚拟主机? 我收到错误

我刚接触Ubuntu并设置了Apache。 我只是想为本地发展做好准备。 我发现了大量的信息,但其中有些是矛盾的或混乱的。 我开始了一个新的安装,现在我已经搞砸了,当我尝试启动它时,Apache会抛出错误。 有人可以给我一个简单的,一步一步的方法从头开始在Ubuntu上设置虚拟主机? 我需要编辑哪些文件? 我需要运行哪些命令? 谢谢! 更新#1:具体来说,我得到的错误是这样的: * Restarting web server apache2 apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName [Fri Oct 09 11:32:38 2009] [error] VirtualHost sitename:0 — mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results […]

htaccess mod重写问题

让我立即开始我的问题: Options +FollowSymLinks RewriteEngine On RewriteBase / RewriteRule ^([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1 [L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2 [L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3 [L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ sinj.com.hr/index.php?var1=$1&var2=$2&var3=$3&var4=$4 [L] RewriteRule ^([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1 [R=301,L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2 [R=301,L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3 [R=301,L] RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ sinj.com.hr/$1/$2/$3/$4 [R=301,L] 有文件夹sinj.com.hr/administracija ,当我尝试访问http://localhost/sinj.com.hr/administracija我被redirect到 HTTP://localhost/sinj.com.hr/administracija VAR1 = administracija 我想要的是,当用户inputhttp://localhost/sinj.com.hr/administracija ,他被redirect到http://localhost/sinj.com.hr/administracija/index.php 。 我试图用头(“位置:…”)做到这一点,但它总是将我redirect到http://localhost/sinj.com.hr/administracija?var1=administracija 。 如果文件夹administracija重命名然后header()函数工作。 任何想法如何解决这个问题? 谢谢,Ile

用mod_include分割错误

我正在使用一个相当复杂的结构,包含多个ssi-includes,set-和echo-命令。 第一个文件写很多设置命令,然后再包含另一个文件包含第三个文件。 在最后包含的文档中,使用echo-command打印variables值。 我注意到,随着variables数量的增加,分段错误发生的概率上升。 有没有人遇到类似的东西? 我如何去debugging这样的问题? 我正在使用IBM_HTTP_Server / 2.0.47.1-PK65782 Apache / 2.0.47

与jira战争安装mod_proxy

所以我有jira安装,我通过mydomain.com:8080/jira访问我。 我真的想通过jira.mydomain.com访问我。 我启用了mod_proxy并将以下内容放在apache虚拟主机中: ServerName jira.mydomain.com ProxyPreserveHost On ProxyPass / http://localhost:8080/jira 但是,它转发给我jira.mydomain.com/jira。 哪个不行 我也把jira中的基本URL改为jira.mydomain.com。 这里发生了什么事情,为什么extra / jira存在? 我安装jira作为战争安装,因为我通过tomcat运行其他应用程序(汇合,哈德森等)

mod_proxy安全性

我在Debian Lenny上使用apache2。 在我的proxy.conf我试着添加 Allow from localhost 正如其他一些论坛所build议的那样,让代理工作。 没有工作。 只有我说,它才有用 Allow from all 我的问题是这个。 是否有任何安全隐含这个允许从所有指令? 大多数人都说这样做尽可能有限,但“全部”是客户的权利? 我希望任何人都能够正确地转发他们的IP。 有没有更好的方法来configuration这个?

服务器端包含某些文件

目前,所有的.shtml文件都被SSIparsing。 其中一些页面没有SSI,如果不需要通过SSI,效率会更高。 有没有办法指定一个文件或一组文件进行parsing,并parsing其余部分,而不是所有的.shtml文件parsing? 谢谢

configurationApache + Passenger以从不同目录提供静态文件

我试图设置Apache和乘客服务的Rails应用程序。 不过,我也需要它来提供非公开目录中的静态文件,并优先于这些静态文件在Rails应用程序中的任何东西。 Rails应用程序位于/home/user/apps/testapp和/home/user/public_html的静态文件。 由于各种原因,静态文件不能简单地移动到Rails公用文件夹。 另请注意,根目录http://domain.com/应该由public_html文件夹中的index.html文件提供。 这是我正在使用的configuration: <VirtualHost *:80> ServerName domain.com DocumentRoot /home/user/apps/testapp/public RewriteEngine On RewriteCond /home/user/public_html/%{REQUEST_FILENAME} -f RewriteCond /home/user/public_html/%{REQUEST_FILENAME} -d RewriteRule ^/(.*)$ /home/user/public_html/$1 [L] </VirtualHost> 这对Rails应用程序来说很好,但是对于来自public_html的任何静态内容给出了404。 我也尝试了一个使用DocumentRoot /home/user/public_html的configuration,但是根本不提供Rails应用程序,可能是因为Passenger不知道处理请求。 有趣的是,如果我将条件更改为!-f和!-d,并将重写规则更改为redirect到另一个域,则按预期工作(例如http://domain.com/doesnt_exist被redirect到http://otherdomain.com/doesnt_exist ) 我如何configurationApache来提供这样的静态文件,但允许所有其他请求继续乘客?