Articles of apache 2.4

排除受保护的子url在Apache 2.4上不起作用?

我尝试从受保护的网站中排除子url“/ shop / api”。 它在Apache / 2.2.15的不同服务器上正常工作,但现在不与Apache / 2.4.7? 它总是要求基本authentication。 任何想法我做错了什么? AuthType Basic AuthName 'Authentication required' AuthUserFile /var/www/vhosts/pwd/.htpasswd # Allow access to excluded diretories SetEnvIf Request_URI ^/shop/api/ noauth=1 Order deny,allow Satisfy any Deny from all Require valid-user Allow from env=noauth

将Apachevariables传递给SetHandler指令

我试图在我的Apache(2.4.18)服务器(使用mod_proxy_fcgi )上dynamic确定用于不同分离的PHP“apps”(不同的套接字导致不同的PHP-FPM池)的Unix套接字 : <DirectoryMatch "/home/apps/app_(?<appname>[a-zA-Z]+)"> <FilesMatch \.php$> SetHandler "proxy:unix://var/run/app_%{env:MATCH_APPNAME}.sock|fcgi://localhost:42001" </FilesMatch> </DirectoryMatch> 不幸的是, Apache与SetHandler指令一起使用时, 似乎无法识别/评估 <DirectoryMatch>指令中由正则expression式匹配定义的variables 。 error.log说: [proxy:error] (2)No such file or directory: AH02454: FCGI: attempt to connect to Unix domain socket /run/app_%{MATCH_APPNAME}e.sock (*) failed 如何将一个variables传递给SetHandler指令? 当我使用UDS的“刚性”path(例如"proxy:unix://var/run/app_someappname.sock|fcgi://localhost:42001" ,我的PHP-FPM正常工作,但似乎有在它使用一个variables时出现问题。 我也尝试使用几个variables连接在一起来构buildpath: <FilesMatch \.php$> Define one "proxy:unix://var/run/app_" Define two ".sock|fcgi://localhost:42001" Define final ${one}%{MATCH_APPNAME}e${two} Header set HANDLER_PATH ${final} </FilesMatch> […]

Apache虚拟主机(Ubuntu)的错误文档根

我试图设置一个Apache服务器与几个虚拟主机(www.domain.com&store.domain.com),但由于某种原因,当我刚刚启用它们之一(store.domain.com)Apacheredirect到错误的文档根目录(/ var / www),这显然是默认的。 这是没有正确redirect的虚拟主机configuration文件: <VirtualHost *:80> ServerName store.domain.com ServerAdmin [email protected] DocumentRoot /var/www/store/public_html/ ErrorLog /var/www/store/logs/error.log CustomLog /var/www/store/logs/access.log combined </VirtualHost> 当我运行命令apache2ctl -S我得到以下内容: Name or service not known: AH00547: Could not resolve host name *80 –ignoring! AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using xxx.xxx.xxx.xxx. Set the 'ServerName' directive globally to suppress […]

服务器证书不包含与服务器名称匹配的ID

我们的服务器昨天升级了,所以它现在有一个更新的Ubuntu,Apache 2.4.10,PHP等。我把所有的东西都回来了,Apache开始抱怨我的configuration。 服务器托pipe使用通配符为不同客户提供dynamic内容的站点,并为这些客户提供针对不同服务的3个通配符证书。 具有通配符的configuration的一部分如下所示: <VirtualHost *:80> ServerName *.dashboard.example.com ServerAlias *.dashboard.example.com RewriteEngine On RewriteCond %{HTTP_HOST} ^(.+)\.dashboard.example\.com$ RewriteRule ^/(.*)$ https://%1.dashboard.example.com/$1 [R=302,L] </VirtualHost> <VirtualHost *:443> ServerAdmin [email protected] ServerName *.dashboard.example.com ServerAlias *.dashboard.example.com DocumentRoot /var/www/dashboard.example.com/web <Directory /> AllowOverride All Options -Indexes +MultiViews +FollowSymLinks Order Deny,Allow Allow from all </Directory> ErrorLog /var/log/apache2/dashboard.example.com-error.log CustomLog /var/log/apache2/dashboard.example.com-access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/bundle_wc_dashboard_example_com.crt SSLCertificateKeyFile /etc/ssl/certs/wildcard_dashboard_example_com.key […]

如何告诉Apache回答403而不是401?

我们对Location s的子树有一些规则,涉及Require -ing ldap-group和expr -s。 用户被挑战提供login凭证,这是validation。 但是,即使证书正确,并且由于其他原因(例如属于错误的组或来自不正确的IP地址)而导致访问被拒绝,服务器的响应始终为401 – 而不是403。 因此,浏览器不断提示用户“再试一次”…我可以告诉Apache(2.4)使用403,如果在Authorization标题中提供的信息检出,并且是其他规则,拒绝请求? 同样,我知道为什么在authentication成功之后,某些用户的授权被拒绝 – 这是应该的。 我只需要与这些用户沟通,即:“是的,我们相信你是你自己说的那个人,但是你不能访问这个地方。” 看来,mod_rewrite是引发403响应的唯一方法 – 可以通过mod_rewriteexpression式检查LDAP组的成员身份,还是强制将状态从401更改为403? 我在WebMaster的网站上问了这个问题,但没有得到答案 – 那里的人似乎更多的内容为导向。 这是我的当前configuration的相关片段: <Location /foo> Require ldap-group CN=foo,OU=Groups,DC=example,DC=net </Location> 当提供的用户名/密码validation,但要求不满意,我需要返回一个403 … 401当前正在返回。

如何检查Apache 2.2中是否存在指令

我正在尝试编辑一个configuration文件,以便在Apache 2.2和Apache 2.4上同时运行。 该文件最初是为Apache 2.2编写的,包含以下configuration: RewriteLogLevel 3 RewriteLog /var/log/httpd/apache_rewrite_log 但是,Apache 2.4不再支持RewriteLogLevel 。 相反,在这种情况下,我需要使用: LogLevel alert rewrite:trace6 基本上我想要做的是: <IfDirective LogLevel> LogLevel alert rewrite:trace6 </IfDirective> <IfDirective RewriteLog> RewriteLogLevel 3 RewriteLog /var/log/httpd/apache_rewrite_log </IfDirective> 但是, IfDirective在Apache中似乎并不是什么东西。

虚拟机之间的共享存储

我们计划在虚拟环境中build立HA apache服务器。 服务器之间的负载平衡工作正常。 我们面临的问题如下: 我们希望有一个物理存储所有的Apache服务器(这是networking内容将放置)。 每个客户在存储磁盘上都有自己的用户和他自己的目录。 这意味着每个客户应该只能从我们的每个Apache服务器的“共享”存储上访问他自己的目录。 在以下方面实现我们的目标的最佳方式是什么? 已同步的用户 共享存储 同步权限 高可用性 高性能

Apache重写从原始请求URL中提取多个数据片段

尝试创build一个仅适用于video文件的Apache重写,直到专用的video服务Web服务器。 它需要重写逻辑从原始请求中提取多个信息,包括HTTP_HOST域名,request_uri和目标文件types。 我在寻求帮助和build议方面做了很多工作,经历了大量的试错……只能接近,似乎无法100%正确。 这是我想要完成的: 传入url示例: https://www.example1.com/images/source/vidtest.mp4 预定的着陆URL: https://www.webvideo.com/example1_video/images/source/vidtest.mp4 因此,一个redirect仅适用于以video文件扩展名types(例如.mp4 )结尾的请求,该types仅提取传入的域名(不是前导www ,或者来自原始HTTP_HOST的尾随.com ),并提取剩余的URI ….并将其redirect到一个新的networking服务器,放入一个以原始主机域名命名的video文件夹(例如example1 ),然后是_video ,然后是附加的原始URI的剩余部分。 这里是我现在有的redirect逻辑: RewriteCond %{HTTP_HOST} ^www\.[^.]+\.com$ RewriteCond %{REQUEST_URI} \.(mp4|mp3|mov|mpg|mpeg|webm|wmv|ogg)$ [NC] RewriteRule ^/(.*)$ https://www.webvideo.com/%1_video/$1 [R=301,NC,L,NE] 这似乎是正确的工作,只拿起这些video文件扩展名types之一传入的请求,它正确地redirect到预期的目标www.webvideo.com域,它也正确地附加后面的URI( $1variables)。 但不幸的是,它将input文件types(如mp4 )放在_video之前的%1variables位置,而不是原始域名。 所以这个例子传入的请求导致redirect到这个: https://www.webvideo.com/mp4_video/images/source/vidtest.mp4 有人可以提出一个更正吗? 我需要做些什么才能将原始域名作为variables存入新的文件夹path中,AND是否只将redirect应用于video文件types,并将尾部URI的其余部分也包含在内? 请注意,将有多个不同域的传入请求(这就是为什么需要为新文件夹path提取域名的原因),这些请求都将被redirect到同一个单独的web服务apache目标。

在备用端口上设置SSL时出错

我有一个运行在Raspberry Pi上的Web服务器。 我在443端口运行stunnel,所以我一直在努力把我的web服务器移动到端口8443 。 我使用Let's Encrypt (Certbot)来获得我的SSL证书,之前他们一直在完美地工作。 我已经学会了如何使用DNS挑战获取证书,因此不再需要使用端口443进行身份validation。 我相信我所有的configuration文件设置正确,但我会在下面插入它们。 Apache正在运行,什么都不应该与它冲突,但是当我试图通过HTTPS访问我的网站时,Chrome就表示网站意外地closures了连接,而Edge说它使用过时或不安全的TLS设置。 我一直在试图找出自己的,但在这一点上,我不知道该怎么做。 # If you just change the port or add more ports here, you will likely also' # have to change the VirtualHost statement in' # /etc/apache2/sites-enabled/000-default.conf' Listen 80 #<IfModule ssl_module>' # Listen 8443' #</IfModule>' #<IfModule mod_gnutls.c>' # Listen 8443' #</IfModule>' # vim: syntax=apache ts=4 […]

针对Windows Server 2008的Apache调优build议

我们已经在Windows Server 2008 R2上实现了Apache 2.4 64位,作为反向代理来利用我们域的通配证书。 即使轻负载,我们也感到失望,所以我可能错误地configuration了一些东西。 由代理服务器(Glassfish 3.0.1)服务的网站变得越来越慢,无法响应。 重新启动Apache暂时修复了这个问题,但是很快就没有反应。 通过直接转到Glassfish服务器的IP地址来绕过代理,我们可以看到GF不是问题。 我们唯一要做的就是在Apache上使用SSL前端的反向代理,并将内部networking上的stream量通过http传递给Glassfish服务器。 当网站没有响应时,看一下Windows Server进程表示很less的活动。 CPU可能运行在10%(单个CPU)。 有less于30个TCP连接。 内存利用率不及GB(这是一个4GB的机器)。 networkingstream量几乎没有打破100kbps的门槛。 所有迹象表明,服务器几乎没有汗streamyet背,但该网站没有反应。 我已经设置了以下属性: SSLSessionCache "shmcb:C:/Apache_direct/logs/ssl_scache(1024000)" SSLSessionCacheTimeout 300 ThreadsPerChild 3000 MaxRequestsPerChild 0 KeepAlive On KeepAliveTimeout 15 ProxyRequests Off SSLStrictSNIVHostCheck off ProxyBadHeader Ignore 我有每个服务器的每个http和https端口的虚拟主机设置。 VHost设置类似于: <VirtualHost *:443> ServerName test.domain.org # ProxyPreserveHost On SSLEngine on ProxyPass / http://192.168.80.196:8080/ ProxyPassReverse / https://192.168.80.196:8080/ […]