Articles of apache 2.4

尝试确定Apache应用程序服务器的重写,redirect或代理

我在内部运行一个Apache Web应用程序服务器,在App.domain.com。 它通过在防火墙/网关上使用端口转发作为app.domain.com:10080从外部暴露出来。 除了在开发和configuration(从外部完成)之外,Access一般可以在内部( http://app.domain.com )和外部( http://app.domain.com:10080 )进行工作,不pipe怎样,应用程序将端口(10080)存储在其configuration中,这偶尔会popup一些所服务的URL。 然后显示为"http://app.domain.com:10080/some/text/…" 这不是发生在外部的问题,而是正确parsing,但从内部访问时会产生错误,因为服务器不在端口10080上运行,而是在端口80上运行。 我现在试图解决这个问题,并想知道哪个是解决这个问题的首选方法。 我应该使用单独的VirtualHost指令简单地将10080上的请求代理到80端口: <VirtualHost *:10080> ProxyRequests Off ProxyPreserveHost On <Proxy *> AddDefaultCharset Off Order allow,deny Allow from all </Proxy> ProxyPass / http://app.domain.com/ ProxyPassReverse / http://app.domain.com/ </VirtualHost> 或者我应该使用redirect: <VirtualHost *:10080> ##{and any one of:} Redirect permanent / http://app.domain.com/ ## OR ## Redirect / http://%{HTTP_HOST}$1 ## OR ## […]

为什么在Workerconfiguration中使用apache时,每个子项下有一个额外的subprocess和线程

我在工作MPMconfigurationtestingApache,并试图了解它。 工作人员configuration如下所示。 <IfModule mpm_worker_module> ServerLimit 256 ThreadLimit 50 StartServers 10 MinSpareThreads 20 MaxSpareThreads 30 ThreadsPerChild 3 MaxRequestWorkers 50 MaxConnectionsPerChild 0 </IfModule> 按照这个设置,当apache启动时,应该有10个subprocess,每个subprocess可以有3个线程。 但是当我列出进程树时,我看到每个subprocess有11个subprocess和4个线程。 第一个subprocess没有任何线程。 任何人都可以解释吗? 这是pstree -lpg的输出 ├─httpd(1795,1795)─┬─httpd(1796,1795) │ ├─httpd(1797,1795)─┬─{httpd}(1829,1795) │ │ ├─{httpd}(1830,1795) │ │ ├─{httpd}(1831,1795) │ │ └─{httpd}(1832,1795) │ ├─httpd(1798,1795)─┬─{httpd}(1820,1795) │ │ ├─{httpd}(1822,1795) │ │ ├─{httpd}(1823,1795) │ │ └─{httpd}(1824,1795) │ ├─httpd(1799,1795)─┬─{httpd}(1837,1795) │ │ ├─{httpd}(1838,1795) […]

用于mod_pagespeed(Apache)的多个域的CDN

我有一个vps服务器与多个网站,我有一个可以访问的cdn:example.gocache.com 所有这些网站都可以使用这个CDN,但是我希望mod_pagespeed可以自动更改图片的url。 如果图片有这个url: http://www.example.com/pic.png 为了这: http://example.gocache.com/www.example.com/pic.png 你明白我的意思吗? 但也有其他的东西,我只是想mod_pagespeed自动在以下扩展名的文件中做到这一点:gif,jpeg,jpg和png。 这只是图像。 我怎样才能做到这一点 ?

Apache SSLCertificateChainFile,中间CA和带有wget / curl的不可信证书

我最近使用由赛门铁克签署的证书设置了一个Web域: 正如你所看到的,我的Windows电脑默认信任它。 然后,我使用SSLCertificateFile和SSLCertificateKeyFile将其configuration到apache服务器中,重新启动服务并尝试使用chrome访问它。 在浏览器中一切看起来不错,没有任何安全问题。 当我尝试使用wget或curl获取主页时,问题就出现了,在这个configuration中,我总是得到一个错误。 这是来自cURL: * SSL certificate problem: unable to get local issuer certificate * Closing connection 0 curl: (60) SSL certificate problem: unable to get local issuer certificate 解决方法很简单:从证书文件中提取中间CA权限并使用SSLCertificateChainFile指令将其添加到apacheconfiguration中,但是这看起来不是正确的解决scheme,请参阅apache文档 : SSLCertificateChainFile已被弃用 SSLCertificateChainFile在版本2.4.8中变得过时,当> SSLCertificateFile被扩展为也从服务器证书文件加载中间CA证书时。 而我正在使用2.4.18,所以根本不需要这个。 有人经历过类似的事吗?

Apache MPM工作者连接池大小?

工作者连接池大小的影响是什么: worker.app605.connection_pool_size=30 到目前为止,我读过三种不同的解释: 限制与工作者的整体连接 (所以30个连接,不pipeApache线程等)。 并发/并行请求限制到工作(所以请求有限,但不是连接)。 这是每个线程的值,所以这个值被乘以(由Apache的线程设置)。 有趣的是,Tomcat的文档build议不要使用这个属性: 最大连接池大小可以使用属性connection_pool_size进行configuration。 我们通常不推荐将这个属性与Apache HTTP Server结合使用。 对于Apache,我们会自动检测每个进程的线程数,并将最大池大小设置为此值。 来源: https : //tomcat.apache.org/connectors-doc/common_howto/timeouts.html 我正确地认为我的MPMconfiguration的默认值会使这120(匹配每个子设置的线程)? 我有一个负载均衡的Apache安装程序(两个HTTPD在F5后面),每个应用程序服务器被configuration为处理大约60个并发连接。 我的目标是每个应用服务器不超过30个并发连接,从每个Apache(总共限制到60个)。 这是我的MPM conf,供参考: <IfModule mpm_worker_module> ThreadLimit 120 ServerLimit 10 StartServers 3 MinSpareThreads 200 MaxSpareThreads 400 MaxRequestWorkers 1200 ThreadsPerChild 120 MaxConnectionsPerChild 0 </IfModule>

Apacheredirectwww到非www

我正在使用2台服务器。 一个是正​​在使用的服务器,另一个是testing服务器,两者完全相同,关于操作系统,Apache版本和Apacheconfiguration。 OS是Ubuntu 16.04,Apache版本是2.4.29。 这些服务器通过vhost文件使用redirect。 非www到wwwredirect在两个服务器上都能很好地工作。 代码 : RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ – [END] RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ http://www.example.com$1 [R=301,NE,L] 但是, 当使用www进行非wwwredirect时,它在testing服务器上运行良好,但在使用服务器上不起作用。 使用服务器得到一个403禁止的错误。 详情如下。 “您无权访问/在此服务器上。” 代码 : RewriteEngine on RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/ RewriteRule ^ – [END] RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ http://example.com$1 [R=301,NE,L] 而且, 即使在vhost文件中没有ServerAlias,正在使用的服务器也不会被redirect,并且testing服务器被很好的redirect。 这是我正在使用的虚拟主机文件。 另外,我正在使用ISPconfig控制面板。 <Directory /var/www/example.com> […]

/etc/modsecurity/modsecurity.conf中的SecRuleRemoveByID指令已停止工作

总结:文件/etc/modsecurity/modsecurity.conf SecRuleRemoveByID 981405行已经停止工作,我不知道为什么。 我pipe理一个在AWS上运行的虚拟Ubuntu主机,其操作系统版本是14.04.5 LTS。 除了基本的分配之外,还有less量的软件包被安装。 这些包括ntp , ssmtp , mailutils , apache2* , oracle-java8*和postgresql*包。 截至昨天,所有可用的软件包升级都已安装。 所以,主机正在运行一个mod_security的Apache web服务器。 我正在使用mod_security规则的默认设置,一些规则被注释掉了。 /etc/modsecurity/modsecurity.conf的内容是(删除了空行和注释): SecRuleEngine On SecRequestBodyAccess On SecRule REQUEST_HEADERS:Content-Type "text/xml" \ "id:'200000',phase:1,t:none,t:lowercase,pass,nolog,ctl:requestBodyProcessor=XML" SecRequestBodyLimit 13107200 SecRequestBodyNoFilesLimit 131072 SecRequestBodyInMemoryLimit 131072 SecRequestBodyLimitAction Reject SecRule REQBODY_ERROR "!@eq 0" \ "id:'200001', phase:2,t:none,log,deny,status:400,msg:'Failed to parse request body.',logdata:'%{reqbody_error_msg}',severity:2" SecRule MULTIPART_STRICT_ERROR "!@eq 0" \ "id:'200002',phase:2,t:none,log,deny,status:44, \ […]

ProxyPass指令中是否可以使用基于身份validation的远程用户名进行插值?

我想知道是否可以定义这样的两个不同的平衡器 <Proxy balancer://cluster> BalancerMember http://127.0.0.1:3001 retry=1 BalancerMember http://127.0.0.1:3002 retry=1 </Proxy> <Proxy balancer://clusterdevelopment> BalancerMember http://127.0.0.1:3000 retry=1 </Proxy> 然后一个简单的基本身份validation <Location "/development"> AuthType Basic AuthName "development" AuthUserFile ".htpasswd" Require user development Satisfy any </Location> 为了控制ProxyPass指令使用名为cluster的默认平衡器,除非客户端已经使用Remote-User developmentlogin/development ,那么它应该使用名为clusterdevelopment的平衡器。 这个ofc不起作用: ProxyPass / balancer://cluster%{REMOTE_USER}/ interpolate 主要想法是,这应该只与阿帕奇完成。 但花了几个小时后,用RewriteRules和Envvariablestesting我不能得到这个飞行。 现在我开始认为这可能根本不可能。 有任何想法吗?

Apache2需要每隔几个小时重新启动一次 – 缓慢,没有过多的RAM / CPU使用

我最近部署了一台运行Ubuntu 16.04和LAMP的服务器(Apache 2.4.18作为默认的Ubuntu 16.04)。 在服务器投入生产之前,一切正常,但是现在,Apache2每2/3个小时的爬行速度(可能需要每个站点加载2分钟)。 运行sudo service apache2 restart速度再次提高。 我已经在这些时期之一检查了RAM / CPU,并且没有任何地方出现。 服务器是2GB RAM和1个CPU核心。 这是我重新启动Apache之前的top读数 %Cpu(s): 9.2 us, 3.1 sy, 0.0 ni, 86.1 id, 0.0 wa, 0.0 hi, 1.7 si, 0.0 st KiB Mem : 2045252 total, 247516 free, 838924 used, 958812 buff/cache KiB Swap: 524284 total, 523764 free, 520 used. 1047636 avail Mem 在mysqld中使用大量资源的唯一过程是平均使用1 […]

如何审计apache / php如果他们设置了一些安全漏洞

当你在php上安装新的系统时,你使用哪种方法来检查“未经授权的访问”,或系统外部发送信息? 我以为这些方法 1)searchfopen,file_put_contents,file_get_contents 2)searchcurlfunction 3)审计Apache日志 我们还能search什么?