为什么使用Require ip时apache给出503s?

时间:2018-11-27 22:06:18

标签: apache cloudflare

我们最近从Apache 2.2升级到了2.4。我们有两个位于负载平衡器后面的Web服务器,这些服务器通过Cloudflare来提供流量。

在Web服务器上,我们安装了mod_cloudflare。我们通过以下指令考虑了负载均衡器:

CloudflareRemoteIPTrustedProxy 172.21.171.17
CloudflareRemoteIPTrustedProxy 172.21.171.18

我们在多个站点上都有一个管理区域,还有一些我们要IP限制的博客和其他脚本。我们使用Directory指令中的正则表达式匹配来完成此操作,如下所示:

<Directory ~ "^/var/www/vhosts/[^/]+/public/((sage_import)|(partner)|((blog/)?wp-)?admin)">
    AllowOverride All
    Require ip 111.111.111.111 222.222.222.222 333.333.333.333
</Directory>

此工作可以正常处理的大多数URL。

  • domain.tld/sage_import/script.php
  • domain2.tld/blog/wp-admin 等等

但是,用domain3.tld/admin(在Apache 2.2上可以正常使用)访问的主管理区域不起作用。奇怪的是,我们看到503错误。日志中没有显示503错误-大概根本就没有碰到服务器吗? (我还跟踪了特定于站点的访问和错误日​​志,以及常规的Apache访问和错误日​​志,那里什么也没有。)

当使用ip 111.111.111.111进行浏览时,如果我从Require ip行中删除了该IP,则工作页面会突然显示403错误,并且日志反映了这一点。 /admin页面 still 显示503错误。

但是,当我将负载均衡器IP添加到Require ip行时,503错误消失了,我现在可以访问该页面。

Require ip 111.111.111.111 222.222.222.222 333.333.333.333 172.21.171.17 172.21.171.18

在添加负载均衡器IP之后比较请求的日志似乎没有发现任何有趣的事情:

111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:16 +0000] "GET /blog/wp-admin/ HTTP/1.0" 200 77064 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"
...
111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:24 +0000] "GET /admin/ HTTP/1.0" 200 375 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"
...
111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:37 +0000] "GET /sage_import/export.php HTTP/1.0" 200 33289 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"

正在使用的LogFormat如下:

LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" combined

注意:将Require all granted添加到上述Directory指令中也可以。

更新

我也尝试过:

SetEnvIf X-Forwarded-For 111.111.111.111 allow
Require env allow

代替Require ip,但仍返回相同的503,

导致这503错误的我的配置出了什么问题?

0 个答案:

没有答案
相关问题