0

在apache2前面安装varnish后,我无法访问symfony2项目的开发环境(从localhost连接,所以它在安装varnish之前工作)。

我收到 symfony2 访问被拒绝消息“您无权访问此文件。请检查 app_dev.php 以获取更多信息。”

查看 app_dev.php 文件时:

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1')) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

调试问题后,我发现$_SERVER['HTTP_CLIENT_IP'] 为 NULL。

如何解决这个问题?

谢谢你。


注意:我使用的是 ubuntu 14.04 + apache2.4 + varnish 3 + Symfony2.4

4

1 回答 1

1

如果出现以下任一情况,该行将返回 403:

  • 存在 HTTP_CLIENT_IP 标头
  • 存在 HTTP_X_FORWARDED_FOR 标头
  • $_SERVER['REMOTE_ADDR'] 不是 '127.0.0.1'、'fe80::1'、'::1' 之一

可能您正在 varnish 中设置 HTTP_X_FORWARDED_FOR 标头,或者 varnish 正在为您设置它,具体取决于 varnish 版本。取消设置或重写条件,这是一项安全措施,因此请采取相应措施。

你在这里有一些有趣的信息:http: //symfony.com/doc/current/cookbook/cache/varnish.html

于 2014-12-10T12:47:02.963 回答