我在 Ubuntu 14.04 上有一个正常运行的服务器。我试图使用允许/拒绝块来限制对文件的访问:
<Files "login.php">
order deny,allow
deny from all
allow from 22.123.123.12
</Files>
这成功拒绝了所有用户并告诉他们“禁止访问。您无权访问...”。如果我删除“拒绝所有人”行,它允许我查看登录屏幕。
但无论我做什么,调试什么,当我使用这个 IP 地址时,我都无法让它让我查看这个文件。'allow' 语句似乎永远不起作用。
已经尝试过一些调试:
- 我尝试添加
AllowOverride All
到我的主机配置中以确保文件/授权模块本身正常工作。 - 我尝试了许多其他允许/拒绝语句
- 该语句当前位于 .htaccess 文件中,但我尝试将其移入主机配置,但也不起作用。
其他可能相关的信息:
- 我使用了一些 PHP 在网页上输出我的 IP:成功识别为 22.123.123.12。
- 我正在为网页使用 SSL,因此我正在访问文件https://example.com/login.php。不确定这是否会影响事情。
我开始怀疑服务器出于某种原因认为我在这个 IP 地址上,但搞不清楚为什么会这样。有什么想法吗?
答案1
感谢@ChrisLam 的评论,我意识到访问日志中显示的 IP 地址与我当前的 IP 不同。
这个 IP 108.162.225.167 似乎与 CloudFlare.com 的服务器相匹配,我们正在使用该服务器来加速网站速度。
尽管设置了不缓存此页面的规则,但请求的 IP 地址仍然没有被传回服务器。CloudFlare 表示:
“由于 CloudFlare 充当代理,您会注意到网站访问者的 IP 地址在服务器日志和 Web 应用程序中显示方式的变化 - 值得注意的是所有访问似乎都来自 CloudFlare IP 地址。”
安装 CloudFlare 的mod_cloudflare
Apache httpd 模块允许这些 IP 地址传回服务器,并完美地解决了我的问题。
CloudFlare 网站上提供的下载和信息: https://www.cloudflare.com/resources-downloads#mod_cloudflare