Articles of apache 2.2

在调用Silex之前,在URL中添加一个尾部的斜线

作为大多数框架,Silex依赖于重写规则来处理漂亮的URL。 build议使用此框架的默认.htaccess RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] 这是直接的,工作得很好。 但是,如果我也想重写请求uri始终包含一个结尾的斜杠我不能得到它的工作。 我曾尝试过使用以下规则。 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^(.*)/$ RewriteRule . %{REQUEST_URI}/ [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [QSA,L] 为了debugging这个,我尝试了使用[R]标志强制redirect,我可以看到它的正确评估,但是这两个规则在一起并没有这样做,因为结果请求uri仍然没有结尾的斜杠。 总结一下: example.com/foo应该redirect到example.com/foo/ ,最后由index.php处理。 example.com/foo/应该由index.php处理而不做修改。 我不是mod_rewrite的专家,但是我在这里花了一段时间阅读文档,我有一种直觉,认为这应该可以通过这种方式来解决。 在此先感谢,亚历克斯

使用正则expression式将一个或多个URLredirect到一个

在我的网站上,我有一些可以通过两个url访问的页面: …/页 … /参数/页 为了优化search引擎的网站,我必须redirect所有… /网页url… /参数/网页url。 我怎样才能达到修改文件.htaccess?

apache vhostconfiguration,以便_default_转到另一个IP

您好我有3个Apache服务器,但一个入站IP与一个端口80听。 所有的80端口转到192.168.1.10。 但我想虚拟主机发送某些像www.mydomain.co.uk这样的域到所需的本地文件夹,某些域到服务器2(192.168..1.11)的wiki.mydomain.co.uk ,这对域名wiki.mydomain.co.uk工作,它完美的作品但我还想要做的就是发送所有“备用”未知stream量到192.168.1.12,这是不工作,因为我希望。 我想要做的就是将未列出的stream量发送到服务器192.168.1.12。 当我在机器192.168.1.12上进行端口检查时,什么都没有到达。 NameVirtualHost *:80 Alias /errors/ /var/www/html/mydomain/errors/ <VirtualHost *:80> ServerName www.mydomain.co.uk DocumentRoot /var/www/html/mydomain/www ErrorDocument 404 /errors/404error.php </VirtualHost> <VirtualHost *:80> ServerName admin.mydomain.co.uk DocumentRoot /var/www/html/mydomain/admin </VirtualHost> <VirtualHost *:80> ServerName wiki.mydomain.co.uk ServerAdmin root@localhost ProxyRequests Off ProxyPreserveHost On ProxyPass / http://192.168.1.11/ ProxyPassReverse / http://192.168.1.11/ <Proxy *> Order allow,deny Allow from all </Proxy> ErrorLog /var/log/httpd/wiki.mydomain.co.uk.log CustomLog […]

缓解DDoS代理攻击

在最后的日子里,我的Apache被来自代理的许多连接所攻击。 我已经确定了来源,但不能有效地阻止攻击。 攻击者似乎正在使用幽灵或这个变种攻击我的Apache在80端口。 我安装了nginx和varnish,但不足以支持额外的负载。 我还在iptables中添加了一个规则来丢弃包含string“X-Forwarded-For”的数据包,但不会阻塞所有的代理。 有没有人有build议?

为什么我的CloudForms脚本不启动Apache?

我试图创build一个运行Apache的实例,似乎一切正常,但Web服务器没有启动。 它手动启动罚款。 如果我重新启动实例,它不会自动启动Web服务器。 我的资源部分包含: "Resources" : { "CfnUser" : { "Type" : "AWS::IAM::User", "Properties" : { "Path": "/", "Policies": [{ "PolicyName": "root", "PolicyDocument": { "Statement":[{ "Effect":"Allow", "Action":"cloudformation:DescribeStackResource", "Resource":"*" }]} }] } }, "HostKeys" : { "Type" : "AWS::IAM::AccessKey", "Properties" : { "UserName" : {"Ref": "CfnUser"} } }, "testInstance" : { "Type" : "AWS::EC2::Instance", "Metadata" : […]

不尊重FcgidMaxProcesses

我正在使用FastCGI(fcgi)。 我有一个问题,更多的PHP进程正在产生比应该是,这是吃我的RAM。 我正在使用WHM,所以通过WHM Web界面设置了以下PHP设置> Apacheconfiguration>包含编辑器> Pre VirtualHost包括: <IfModule mod_fcgid.c> FcgidInitialEnv PHP_FCGI_MAX_REQUESTS 500 FcgidMaxRequestsPerProcess 500 FcgidMaxProcesses 15 FcgidMinProcessesPerClass 0 FcgidMaxProcessesPerClass 8 FcgidIdleTimeout 30 FcgidIdleScanInterval 15 FcgidProcessLifeTime 60 FcgidIOTimeout 300 FcgidMaxRequestLen 268435456 </IfModule> (通常这些设置会进入/usr/local/apache/conf/php.conf ,但是在更改各种设置时,这个文件被WHM覆盖,所以我不得不把它们插入到其他地方。上面的方法是在cPanel论坛中推荐的,并导致设置被包含在Apacheconfiguration中。) 然而,尽pipeFcgidMaxProcesses 15 ,我发现通过top ,高峰使用期间(也许更多),在任何给定的时间,最多可以运行45个PHP进程。 例如,这里是上个周末拍摄的屏幕截图: 顶级输出截图http://f.cl.ly/items/1H2M452J1K2p0Z231H2y/Screen%20Shot%202013-01-19%20at%207.16.44%20AM-2.png 我真的希望它最多限制在15个进程。 (尽pipe看起来我有内存空间,但实际上却是2GB + 1GB的可破解性,我通常需要将它保持在2GB以下)。 这是一个运行CentOS 6,Apache 2(Worker MPM),PHP 5.3.20(FastCGI / fcgi)和MySQL 5.5.28的Apache服务器。 2 GB RAM(3 GB突发),24个CPU。

只有文件夹不存在时,RewriteRule才起作用

我不需要直接访问图像,而需要使用RewriteRule来redirect一组要通过脚本访问的图像。 RewriteRule用于它: RewriteRule ^Images/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L] 我希望这会改变: www.example.com/ 图片 /test/123.png 成 www.example.com/image.php?file=123.png 但它不这样做。 但是,如果我将RewriteRule更改为以下内容: RewriteRule ^Images2/test/([^.\/]*)\.png /image.php?file=$1.png [R=301,L] 以下工作: www.example.com/ Images2 /test/123.png 成 www.example.com/image.php?file=123.png 不同之处在于Images存在而Images2不存在。 是否有可能使用现有的文件夹。 任何帮助如何获得顶部的例子工作? 更新 :仔细查看mod_rewrite文档后 ,我发现: …请注意,mod_rewrite会尝试通过检查path的第一部分是否存在于文件系统的根目录来尝试猜测您是否指定了文件系统path或URLpath。 看起来,如果path被解释为一个URLpath,它将起作用,如果它被解释为一个文件系统path,它就会失败。

Apache2 mod-jk和VirtualHosts

我有一个虚拟主机lessapache2服务器。 其中两个虚拟主机使用modJK来处理由Glassfish生成的页面。 我有全局configurationmodJK和JkMount指令只用于VirtualHost部分。 一般来说,这个configuration是有效的,但是有时(经常),当我尝试访问这些Glassfish页面时,得到了503错误。 我不知道如何find一个原因(也许一些命中?),但我改变了日志级别modJkdebugging。 我看到这样的条目: jk_map_to_storage::mod_jk.c (3773): missing uri map for domainWithoutJkMount:/viewtopic.php 这是一个由PHP处理的请求条目,并且该域的虚拟主机没有JkMount 。 所以据我所知, modJK的文档不应该从这个VH发送任何东西到modJk。 为什么我可以在日志文件中看到这些条目?

分布式图像存储/预算服务

我不确定在提供上传文件时如何提供容错解决scheme。 我有一台负载均衡器,两台服务器(webserver1,webserver2)作为节点,都运行Apache2,两个节点都可以访问数据库,而不是WAN。 networking服务器最终将被缩放,数据库将被分割。 一般文件复制 此时,我正在运行从webserver2到webserver1的预定rsync,webserver1是主服务器,谁的文件正在分发到webserver2。 目前只有两台服务器,尽pipe这是为了扩展。 共享图像 我的Web应用程序中有三个目录用于上传到webserver1和webserver2的用户生成文件(这些是rsync操作的例外)。 目前,我有3个NFS共享从webserver1提供,表示共享正在由webserver2挂载。 我对分布式体系结构相当陌生,但从我所看到的情况来看,NFS解决scheme导致了单点故障 – 我已经改变了负载平衡器上的权重,以确保webserver2接收更多stream量,所以webserver1上的负载不应该更高。 我没有更多的预算花在任何云解决scheme(如Amazon S3)上,所以我唯一的行动就是提供免费的软件解决scheme。 有没有可行的软件解决scheme? 我的最高优先级是删除单一故障点,同时将服务器负载降至最低。

Apache + OpenSSL和Apache + mod SSL有什么不同?

我正在从自签名证书迁移到签名证书。 我正在使用namecheap和正面的SSL。 有Apache + OpenSSL和Apache + mod SSL的选项。 我的印象是,mod SSL只是使用了OpenSSL的function。 我打算使用类似于以下内容的方式生成密钥/证书: touch smtpd.key chmod 600 smtpd.key openssl genrsa 2048 > smtpd.key openssl req -new -key smtpd.key -x509 -days 365 -out smtpd.crt # has prompts openssl req -new -x509 -extensions v3_ca -keyout cakey.pem -out cacert.pem -days 365 并把它们放在适当的地方。 我应该select哪个选项来完成该过程? 我正在使用openssl来创build证书,但在Apache服务器中启用了mod ssl。 或者我正确地假设这两个选项完全相同的事情。