Articles of Apache的2.2

Apache过度cachingJS / CSS /图像

我们遇到JS和CSS文件被浏览器caching太久的问题。 我们经常进行开发,每当我们推出一个更改,就会打破旧版本caching的用户。 但我无法弄清楚为什么我们的服务器caching这么难。 我看了我们的httpd.conf,我们有这样的: <IfModule mod_headers> <FilesMatch "\.(css|js)$"> Header set Cache-Control "max-age=43200, public, must-revalidate" </FilesMatch> </IfModule> 所以,如果我理解这个权利, 应该把 JS和CSS文件设置为caching12个小时,然后检查文件和服务器是否已经改变。 但是,当我检查我得到的HTTP响应头,我甚至没有看到任何Cache-Control头! 但是,而不是从来没有caching这些文件,浏览器似乎总是caching它们。 没有其他的头文件被设置在我们的conf中,并且据我所知,我们甚至没有使用mod_expires。 这是我们自己的服务器,而不是一些托pipe的解决scheme,所以我完全控制了这个盒子。 我们不使用.htaccess文件,所以它不会被重写的地方… 我知道我在这里做错了事。 我很确定我有mod_headers在Apache中正确安装,但我不知道如何检查。 我应该使用mod_expires而不是另外? 我应该使用不同的最大年龄? 感谢您提供的任何帮助。 编辑:进一步的实验后,我发现,如果我注释掉<IfModule mod_headers>语句,标题确实发送。 这是令人困惑的,因为如果模块不在那里,那么生成的Header集也不能工作。 但是果然,它正在我的开发服务器上工作。 尽pipe如此,我仍然紧张地将它部署到我们的现场服务器上。 任何想法为什么mod_headers不会被IfModule识别,但仍然工作?

有主机问题,任何人都可以推荐一个解决scheme或其他主机选项?

我有一个PHP / MySQL的Web应用程序,每月大约有60万次点击。 它在过去几个月里一直运行良好,但最近服务器正在崩溃。 记忆崩溃之间的时间更为罕见,但现在在过去的两天里已经坠毁了两次。 运行时,运行速度非常快,我不能经常让网站停止运行。 有没有人有任何想法如何解决我的问题,或有任何build议在另一个Web主机,可能会解决这个问题。 我的服务器设置:非托pipeVPS(512MB专用内存)它运行CentOS,Apache2和PHP 5.2。 我只使用PHP和MySQL运行Web应用程序。 我受欢迎的应用程序是使用cakePHP。 我在这里主持其他网站,但他们没有得到很多的点击。 我需要有自动备份。

旧的ssl证书没有在apache2上消失

我已经用新的replace了旧的SSL证书,并重新启动Apache几次,但旧的证书仍然显示在Web浏览器,当我运行一个命令 openssl s_client -connect 127.0.0.1:443 -showcerts 我也删除所有旧的证书文件。 所以不知道Apache仍然读取这些证书。 而不是读新的。 这里是我的ssl.conf Listen 0.0.0.0:443 SSLEngine on SSLOptions +StrictRequire <Directory /> SSLRequireSSL </Directory> SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLMutex file:/usr/apache2/logs/ssl_mutex SSLRandomSeed startup file:/dev/urandom 1024 SSLRandomSeed connect file:/dev/urandom 1024 SSLSessionCache shm:/usr/apache2/logs/ssl_cache_shm SSLSessionCacheTimeout 600 SSLPassPhraseDialog builtin SSLCertificateFile /usr/apache2/conf/ssl.crt/server.crt SSLCertificateKeyFile /usr/apache2/conf/ssl.key/server.key SSLVerifyClient none SSLProxyEngine off <IfModule mime.c> AddType application/x-x509-ca-cert .crt […]

apache虚拟主机configuration混乱

我很困惑,因为使用虚拟主机或不。 domain.com/xyz/xyz指向一个外部服务器的IP地址。 如何在外部服务器上configurationapache来parsing来自domain.com/xyz/xyz到xyz ( /var/www/html/xyz )文件夹的请求,而不是默认的虚拟主机?

从脚本调用PHP时,会使用错误版本的PHP

如果这个问题真的很基本,我会提前道歉。 我的背景是在Windows中,我被要求维护一个状态不好,正在使用的RedHat Linux服务器。 问题是PHP的版本在从Apache的脚本执行时与命令行不同。 例如: 从命令行: 从网页(Apache): 从网页调用的一个php脚本: 脚本被这个php代码和函数调用: $exec_result = sku_exec(CLIMPORT.FILE_NAV, '', $_POST['nav_skus']); function sku_exec($file_path, $call, $args) { $exe = $file_path.' '; if($call != '' && isset($call) && $call) $exe .= $call.' '; $exe .= $args; // echo $exe.'<hr />'; exec('php '.$exe, $return_data); return $return_data; } 我需要降级脚本以使用5.2.9而不是5.4.1。 我甚至从哪里开始寻找如何configuration? 为什么Apache正在使用的PHP版本与它从脚本调用的版本不同? 我看着Apache的configuration文件,但没有看到任何跳出我的东西。 有什么build议么? 不幸的是,现在不能将服务器升级到最新的PHP。 计划是build立一个新的服务器并迁移到它。

suexec执行世界可写的php文件和由root拥有的文件。 为什么?

我已经configuration我的服务器使用suexec PHP本周末。 现在我已经认识到,suexec也提供由root拥有的文件或世界可写的文件。 但是,在我看来,这不像在这里logging的标准行为。 那么,为什么suexec使用这个文件? 我使用Debian 6 Squeeze stable。 这有点像这个post的反面。

混淆Apache服务器状态结果的结果

我有一个Apache 2.2.3的CentOS 5.5 Final,并检查是否有一些configuration错误,我解决了服务器状态页面和查询某个页面,我得到了这个结果: Apache Server Status for 192.168.3.23 Server Version: Apache/2.2.3 (CentOS) Server Built: Aug 30 2010 12:32:08 Current Time: Tuesday, 07-Aug-2012 16:27:17 CEST Restart Time: Tuesday, 07-Aug-2012 15:35:02 CEST Parent Server Generation: 0 Server uptime: 52 minutes 14 seconds Total accesses: 6263 – Total Traffic: 12.2 MB CPU Usage: u1.85 s.77 cu0 cs0 […]

混淆在Apache服务器状态的CPU负载

Apache服务器状态(mod_status)显示非常低的CPU使用率,即使我看到超过90%的顶级输出。 在服务器状态页面中显示: CPU Usage: u92.17 s14.87 cu0 cs0 – .0178% CPU load 从最高输出: 1187 apache 20 0 439m 204m 6000 S 23.2 6.8 0:24.52 /usr/sbin/httpd 为什么发生这种情况? 我们不能使用服务器状态页来检查Apache的CPU使用情况吗? (显示的最高输出不是满的,因为它有很多的http进程运行,并有很多的CPU …即使它累积了300%,它仍然显示在服务器状态页面0.224%!) 请注意,这和Apache服务器状态结果的混淆结果是不一样的

优先/服务器状态前面另一个.htaccess在apache2中重写规则

有可能优先/服务器状态前面的另一个重写规则? 例如下一个不会让/ server-status工作: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-s RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !\. RewriteRule ^.*$ index.php [NC,L] 我必须把这个添加到.htaccess中才不会进入到php项目中: RewriteRule ^server-status$ – [L] 与谷歌mod_pagespeed,他们的统计页面工作,而不会将其添加到项目.htaccess:/ mod_pagespeed_statistics https://developers.google.com/speed/docs/mod_pagespeed/configuration 我的mod_status.conf: <IfModule mod_status.c> <Location /server-status> SetHandler server-status Order Deny,Allow Deny from all Allow from 127.0.0.1 # My allowed ips here </Location> </IfModule>

HTTPD编译共享模块

我试图在Ubuntu 11中编译Apache 2.4.3。我下载了Perl兼容的正则expression式库(PCRE),并修复了一些与库绑定的问题,同时我也下载了APR和APRUtil,现在所有这一切都可以。 我可以./configure(甚至使用–enable-mods-shared = reallyall)并编译所有东西,但是当尝试启动httpd时,一些共享模块不见了…第一个是mod_authn_file.so,这个文件不在/ modules下目录 有任何想法吗?