Apache 启用cloudflare时虚拟主机不工作
在cloudflare之前,我能够访问phpMyAdmin链接,例如Apache 启用cloudflare时虚拟主机不工作,apache,.htaccess,virtualhost,cloudflare,Apache,.htaccess,Virtualhost,Cloudflare,在cloudflare之前,我能够访问phpMyAdmin链接,例如 example.com/ctrl/pmasetup 在CloudFlare之后,我得到一个403(来自我自己的apache服务器,而不是CloudFlare的错误页面) 我觉得我需要在服务器上的某个地方添加CloudFlare的反向代理,这是我在/etc/hosts中做的,现在看起来像: 127.0.0.1 localhost localhost.localdomain 104.25.68.32 example.com <
example.com/ctrl/pmasetup
在CloudFlare之后,我得到一个403(来自我自己的apache服务器,而不是CloudFlare的错误页面)
我觉得我需要在服务器上的某个地方添加CloudFlare的反向代理,这是我在/etc/hosts
中做的,现在看起来像:
127.0.0.1 localhost localhost.localdomain
104.25.68.32 example.com <- This is the ip of my site when CloudFlare is enabled on it
编辑:即使在注释整个RequireAny
块时,启用CloudFlare时,我仍然得到403
编辑2:如果在位置
标记内,我只有要求所有已授予的
,则它可以工作。那么,除了我最初提出的几个IP之外,我怎么能拒绝所有人呢
编辑3:很可能是因为CloudFlare以访问者身份更改了您的IP,所以我的apache配置无法识别它。有什么想法吗?当存在拒绝选项时,我相信您需要使用RequireAll而不是RequireAny(因为RequireAny是2.4中的默认行为,所以不需要像您那样指定它)。试试看。编辑后的——见下文 我认为您应该允许cloudflare的ip范围访问该站点。毕竟,请求来自cloudflare,而不是客户端 CloudFlare的ip范围可在其网站上找到,网址为: 它们还提供了一种简单的“文本/普通”格式,如下所示: & 我还知道一个小工具,用于nginx-tho,可在以下网址获得:
编辑——从这篇文章开始,我创建了一个新版本。今天(2017.05.31)。url仍然有效。它有一个--help函数,详细说明如何设置为cronjob并包含到nginx中。使用相同的CloudFlare URL。我更改了
requireAll
的RequireAny
——同样的问题。请安装,保留旧的工作规则。如果他们向他们添加范围,请确保更新您的配置。。。如果您无法安装mod_cloudflare,请检查CF Connecting IP
头,但仅检查REMOTE_ADDR
是否在IP页面的范围内,因此请准备创建大量规则(您可以为禁止的RewriteRule
设置一个庞大的RewriteCond
列表)。
127.0.0.1 localhost localhost.localdomain
104.25.68.32 example.com <- This is the ip of my site when CloudFlare is enabled on it
<VirtualHost *:80>
ServerAdmin support@example.com
DocumentRoot /var/www/example.com
ServerName example.com
ErrorLog logs/example.com-error_log
CustomLog logs/example.com-access_log combinedio
Alias /ctrl /var/www/ctrl
<Location /ctrl>
<RequireAny>
Require all denied
Require ip {my ip}
Require ip 104.25.68.32 <- CloudFlare IP, again
</RequireAny>
</Location>
#Header always set Access-Control-Allow-Origin "http://example.com"
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L]
</VirtualHost>