允许Amazon CDN绕过HTTP基本身份验证

时间:2014-06-23 13:47:19

标签: apache basic-authentication amazon-cloudfront

我正在尝试允许Amazon CDN访问受密码保护的登台站点上的资源(HTTP基本身份验证)。 这是我在httpd.conf文件中的代码:

NameVirtualHost *:80
<VirtualHost *:80>
    ServerName staging.domain.com
    DocumentRoot /var/www/html
    <Directory "/var/www/html/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride all
        AuthName "Development Access"
        AuthType Basic
        AuthUserFile /path/to/password.htpasswd
        Require valid-user
        SetEnvIf User-Agent "^Amazon.*" cdn
        Order allow,deny
        Allow from env=cdn
    </Directory>
</Virtualhost>

我正在使用SetEnvIf分配一个变量,如果用户代理是亚马逊,然后只是允许它,但这不起作用。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

问题是需要有效的用户才能访问内容,对所使用的用户代理无动于衷。

给这个article in the Apache Manual a read,特别是看看RequireAny位。这允许您设置具有所需复杂性的规则。您的配置代码看起来像这样。

SetEnvIf User-Agent "^Amazon.*" cdn
<RequireAny>
     Require valid-user
     Require cdn
</RequireAny>

这仅适用于Apache 2.4以上版本。在2.2上,您可以查看Apache Wiki中的this article,特别是Satisfy Any指令。希望这会有所帮助。

答案 1 :(得分:1)

如果你有Apache 2并且可能需要使用HTTP Auth访问资源,这对我有用:

<Directory /var/www/yourwebdirectory>
    SetEnvIf User-Agent "^Amazon.*" cdn
    AuthUserFile /etc/apache2/.htpasswd.forthissite
    AuthType Basic
    AuthName "My Files"
    Require valid-user
    Order allow,deny
    Allow from env=cdn
    Satisfy Any 
</Directory>