仅限 Apache 2.4 白名单 Cloudflare

Apache 2.4 Whitelist Cloudflare only

我一直在努力让它适用于 Apache 2.4

我手动安装了 Apache 2.4、PHP 5.6、MySql 和 MySqli。 (我对 mysql 没有问题,因为我只使用 MySqli)

我曾尝试仅将 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 的跳跃。有人能帮帮我吗?

如果您安装 Mod_Cloudflare Apache 扩展,您只需将以下内容添加到您的 Apache 配置中,所有非 Cloudflare 流量都将被禁止:

DenyAllButCloudFlare

进一步阅读:

虽然我不是 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>