仅限 Apache 2.4 白名单 Cloudflare
Posted
技术标签:
【中文标题】仅限 Apache 2.4 白名单 Cloudflare【英文标题】:Apache 2.4 Whitelist Cloudflare only 【发布时间】:2017-02-14 13:02:37 【问题描述】:我一直在努力让它适用于 Apache 2.4
我手动安装了 Apache 2.4、php 5.6、mysql 和 MySqli。 (因为我只用过MySqli,所以我没有遇到过mysql的问题)
我曾尝试仅将 cloudflare 列入白名单以访问我的网站,但我没有任何运气,而且由于他们的 IP 列表并不能完全满足我的需求,我无法将它们列入白名单。
我知道我不应该只将 cloudflare 列入白名单,但我不小心将 IP 分享给了某人,然后他们将其传播开来,我不希望他们直接使用该 ip,我希望他们使用 cloudflare。
我已尝试将 cloudflare 列入白名单,但没有奏效:
<Directory "C:/Apache24/htdocs/test">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Require all denied
Allow from 103.21.*.*
Allow from 103.31.*.*
Allow from 103.22.*.*
Allow from 104.16.*.*
Allow from 108.162.*.*
Allow from 131.0.*.*
Allow from 141.101.*.*
Allow from 162.158.*.*
Allow from 172.64.*.*
Allow from 173.245.*.*
Allow from 188.114.*.*
Allow from 190.93.*.*
Allow from 197.234.*.*
Allow from 198.41.*.*
Allow from 199.27.*.*
</Directory>
我还没有完全理解从 2.2 到 2.4 的跳跃。有人可以帮帮我吗?
【问题讨论】:
【参考方案1】:如果您安装了 Mod_Cloudflare Apache 扩展,您只需将以下内容添加到您的 Apache 配置中,所有非 Cloudflare 流量都将被禁止:
DenyAllButCloudFlare
进一步阅读:
Logging Real Visitor IP Addresses: mod_cloudflare for Apache httpd【讨论】:
我如何为 Debian 8 Jesse 32 位获得这个? 在此处查看 Debian 说明:cloudflare.com/technical-resources/#mod_cloudflare 它只存在于 32 位,但这不是问题吗? 那里列出了 64 位二进制文件,但也有使用 Apache 本身运行 apxs 或 apxs2 命令自行构建模块的说明。【参考方案2】:虽然我不能 100% 确定这个答案是否适合您的问题,但我会分享它以防其他人想要不同的解决方案。
Cloudflare 在HTTP_CF_CONNECTING_IP
中传递一个真实的 ip。所以我们可以设置重写(使用 mod_rewrite)。所以我们不需要将cloudflare的ips列入白名单,接受所有ip并检查HTTP_CF_CONNECTING_IP
。如果没有匹配,我们拒绝。所以wordpress conf中的配置如下。该示例显示任何不以 17.133.218 开头的真实 IP 都被拒绝访问。
<Directory /var/www/wordpress>
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %REQUEST_FILENAME !-f
RewriteCond %REQUEST_FILENAME !-d
RewriteRule . /index.php [L]
RewriteCond %HTTP:CF-CONNECTING-IP !^17\.133\.218\.
RewriteRule $ /maintenance [R=302,L]
</IfModule>
</Directory>
【讨论】:
以上是关于仅限 Apache 2.4 白名单 Cloudflare的主要内容,如果未能解决你的问题,请参考以下文章
403 禁止,仅限 CakePHP - PHP-FPM - Apache 2.4 和 mod_proxy_fcgi